【C++】基础语句(学习笔记)

一、分支

1、三种基本结构

  1. 顺序结构
  2. 分支结构
  3. 循环结构

2、if与switch对比

1)使用场景

  1. switch只支持常量值固定相等的分支判断
  2. if可以判断区间范围
  3. 用switch能做的,用if都能做

2)性能比较

  1. 分支少时,差别不是很大。分支多时,switch性能较高
  2. if开始处几个分支效果高,之后效率递减
  3. switch所有case的速度几乎一样

二、循环

for,do…while,while …

三、自定义类型

1、枚举

使用 #define 和const 创建符号常量

使用enum不仅能够创建符号常量,还能定义新的数据类型

enum wT(Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday);
WT weekday;
weekday = Tuesday;

2、结构体和联合体

struct Student {char name[6];int age;Score s;
}union Score {double sc;char lever;
}

3、结构体数据对齐——缺省对齐原则

对于32位CPU:

  1. char:任何地址
  2. short:偶数地址
  3. int:4的整数倍地址
  4. double:8的整数倍地址

四、函数

1、函数概述

一个C++程序是由若干个源程序文件构成,而一个源程序是由若干个函数构成,函数将一段逻辑封装起来,便于复用

2、函数的组成

  1. 返回类型:一个函数可以返回一个值
  2. 函数名称:这是函数的实际名称
  3. 参数:参数列表包括函数参数的类型、顺序、数量。参数是可选的

3、函数重载

函数名和参数列表一起构成了函数签名

函数名相同但参数列表不同的函数为不同函数 --> 函数重载

4、函数指针与指针函数

每个函数都占用一段内存单元,它们有个起始地址,指向函数入口地址的指针称为函数指针

int(*p)(int);	//是指针,指向一个函数入口地址
int* p(int); 	//是函数,返回的值是一个指针

5、回调函数

int add(int a, int b) {return a + b;
}int reduce(int a, int b) {return a - b;
}void test(int a, int b, int(*pFunction)(int, int)) {cout << pFunction(a, b) << endl;
}int main() {test(10, 5, add);test(10, 5, reduce);
}

4、命名空间

命名空间作为附加信息来区分不同库中相同名称的函数、类、变量等,命名空间即定义了上下文。本质上,命名空间就是定义了一个范围

namespace rexhao {void test() {cout << "using namespace rexhao" << endl;}
}int main() {rexhao::test();return 0;
}

5、内联函数

内联函数:编译时,编译器会把该函数的代码副本放在每个调用该函数的地方

空间换时间,提高调用效率

inline int maxValue(int x,int y){return x > y ? x : y;
}

内联函数内部不能有太复杂的逻辑,编译器有时会有自己的优化策略,所以内联不一定起作用

6、递归

1)递归的四个基本法则

  1. 基准情形:无须递归就能解出
  2. 不断推进:每一次递归调用都必须使求解状況朝接近基准情形的方向推进
  3. 设计法则:假设所有的递归调用都能运行
  4. 合成效益法则(compound interest rule):求解一个问题的同一个实例时,切勿在不同的递归调用中做重复性的工作

2)递归的缺陷

递归是一种重要的编程思想,很多重要的算法都包含递归的思想

空间上需要开辟大量的栈空间、时间上可能需要有大量重复运算

3)递归的优化

  1. 尾递归:所有递归形式的调用都出现在函数的末尾
  2. 使用循环替代
  3. 使用动态规划,空间换时间

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97026.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#(Csharp)我的基础教程(一)(我的菜鸟教程笔记)-构造方法学习与探究

目录 核心&#xff1a;构造方法&#xff08;析构方法&#xff09;、实例方法/静态方法1、构造方法&#xff08;Constructor&#xff09;&#xff1a;2、构造方法的重载3、构造方法之间的调用4、静态方法 核心&#xff1a;构造方法&#xff08;析构方法&#xff09;、实例方法/静…

ping使用

使用shell ping一个网段 #!/bin/shfor ib in $(seq 1 254); doip"192.168.1.$ib"(if ping -c3 "$ip" >> 1.txt; thenecho "$ip is alive"fi) &done wait在每次循环的最后&#xff0c;使用 & 将子 shell 放入后台执行&#xff0c…

LangChain 摘要 和问答示例

在Azure上的OpenAI端点 注意 OpenAI key 可以用微软 用例【1. 嵌入 &#xff0c;2. 问答】 1. import os import openai from langchain.embeddings import OpenAIEmbeddings os.environ["OPENAI_API_KEY"] "****" # Azure 的密钥 os.environ["OP…

蓝桥杯每日一题2023.10.7

跑步锻炼 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 简单枚举&#xff0c;对于2的情况特判即可 #include<bits/stdc.h> using namespace std; int num, ans, flag; int m[13] {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; bool is_ren(int n) {if((n %…

C++20中的关键字

文章目录 前言关键字列表关键字含义总结 前言 源于上一篇中提到了 decltype是一个关键字&#xff0c;所以去查了现有的关键字列表&#xff0c;其实我对C/C的关键字还停留在上世纪大概30多个的时代&#xff0c;虽然知道C加了 auto、constexpr 等关键字&#xff0c;但查询过后才…

计算机网络(三):数据链路层

参考引用 计算机网络微课堂-湖科大教书匠计算机网络&#xff08;第7版&#xff09;-谢希仁 1. 数据链路层概述 1.1 数据链路层在网络体系结构中所处的地位 链路 (Link) 就是从一个结点到相邻结点的一段物理线路&#xff0c;而中间没有任何其他的交换结点 数据链路 (Data Link)…

LFU 缓存 -- LinkedHashSet

相关题目&#xff1a; 460. LFU 缓存 相关文章 LRU 缓存 – 哈希链表 # 460. LFU 缓存 # Python中和 LinkedHashSet 相似的数据结构 OrderedDict from collections import OrderedDict class LFUCache:# key 到 val 的映射&#xff0c;我们后文称为 KV 表keyToVal {}# key 到…

3.primitive主数据类型和引用 认识变量

3.1 声明变量 Java注重类型。它不会让你做出把长颈鹿类型变量装进兔子类型变量中这种诡异又危险的举动——如果有人对长颈鹿调用“跳跃”这个方法会发生什么样的悲剧&#xff1f;并且它也不会让你将浮点数类型变量放进整数类型的变量中&#xff0c;除非你先跟编译器确认过数字…

Matrix卡顿优化之IdleHandlerLagTracer源码分析

前言 IdleHandler是Android系统为开发者提供的一种在消息队列空闲时运行任务的机制&#xff0c;通过IdleHandler执行的任务优先级低于主线程优先级&#xff0c;会在主线程任务执行完成后再执行&#xff0c;所以适用于一些实时性要求不高的任务&#xff0c;通常用于Android启动…

【状态估计】将Transformer和LSTM与EM算法结合到卡尔曼滤波器中,用于状态估计(Python代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

25 Python的collections模块

概述 在上一节&#xff0c;我们介绍了Python的sqlite3模块&#xff0c;包括&#xff1a;sqlite3模块中一些常用的函数和类。在这一节&#xff0c;我们将介绍Python的collections模块。collections模块是Python中的内置模块&#xff0c;它实现了特殊的容器数据类型&#xff0c;提…

>> 操作符的作用和用法

文章目录 JS 中>>操作符介绍>>操作符的作用>>操作符具体用法总结 JS 中>>操作符介绍 前几天面试美团的时候被一道链表的算法题卡住了&#xff0c;面试完之后我去查了这道算法&#xff0c;然后发现在解题过程中使用了>>这个操作符&#xff1a; l…

JavaWeb:上传文件

1.建普通maven项目&#xff0c;或者maven项目&#xff0c;这里以普通maven为例&#xff0c;区别的jar包的导入方式啦 到中央仓库下载哦 2.结构 3.写fileservlet public class FileServlet extends HttpServlet {Overrideprotected void doPost(HttpServletRequest req, HttpSe…

LVS+Keepalived 高可用集群负载均衡

一.keepalived介绍 1.1.Keepalived实现原理 由多台路由器组成一个热备组&#xff0c;通过共用的虚拟IP地址对外提供服务。 每个热备组内同时只有一台主路由器提供服务&#xff0c;其他路由器处于冗余状态。 若当前在线的路由器失效&#xff0c;则其他路由器会根据设置…

三相PWM整流器滞环电流控制Simulink仿真模型

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

No168.精选前端面试题,享受每天的挑战和学习

🤍 前端开发工程师(主业)、技术博主(副业)、已过CET6 🍨 阿珊和她的猫_CSDN个人主页 🕠 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 🍚 蓝桥云课签约作者、已在蓝桥云课上架的前后端实战课程《Vue.js 和 Egg.js 开发企业级健康管理项目》、《带你从入…

【C++面向对象侯捷下】4. pointer-like classes,关于智能指针 | 5. function-like classes,所谓仿函数

文章目录 4. pointer-like classes,关于智能指针pointer-like classes,关于智能指针 shared_ptrpointer-like classes,关于迭代器5. function-like classes&#xff0c;所谓仿函数【不懂&#xff0c;跳过】 4. pointer-like classes,关于智能指针 pointer-like classes,关于智…

MySQL、Oracle、SQL Server / MS Access 中的 NULL函数用法

一、MySQL&#xff1a; isnull(exper) 判断exper是否为空&#xff0c;是则返回1&#xff0c;否则返回0 ifnull(exper1,exper2)判断exper1是否为空&#xff0c;是则用exper2代替 nullif(exper1,exper2)如果expr1 expr2 成立&#xff0c;那么返回值为NULL&#xff0c;否则返回值…

Java之TCP,UDP综合小练习一

4. 综合练习 练习一&#xff1a;多发多收 需求&#xff1a; 客户端&#xff1a;多次发送数据 服务器&#xff1a;接收多次接收数据&#xff0c;并打印 代码示例&#xff1a; public class Client {public static void main(String[] args) throws IOException {//客户端&…

【机器学习】决策树原理及scikit-learn使用

文章目录 决策树详解ID3 算法C4.5算法CART 算法 scikit-learn使用分类树剪枝参数重要属性和接口 回归树重要参数&#xff0c;属性及接口交叉验证代码示例 一维回归的图像绘制 决策树详解 决策树&#xff08;Decision Tree&#xff09;是一种非参数的有监督学习方法&#xff0c;…