2026《数据结构》考研复习笔记一(C++基础知识)

C++基础知识复习

  • 一、数据类型
  • 二、修饰符和运算符
  • 三、Lambda函数和表达式
  • 四、数学函数
  • 五、字符串
  • 六、结构体

一、数据类型

1.1基本类型

基本类型 描述 字节(位数) 范围
char 字符类型,存储ASCLL字符 1(8位) -128 到 127 或 0 到 255(依赖编辑器)
signed char 有符号字符 1(8位) -128 到 127
unsigned char 无符号字符 1(8位) 0到255
int 整型 4(32位) -2,147,483,648 到 2,147,483,647
unsigned int 无符号整型 4(32位) 0 到 4,294,967,295
float 单精度浮点数 4(32位) 约 ±3.4e±38(6-7 位有效数字)
double 双精度浮点数 8(64位) 约 ±1.7e±308(15 位有效数字)

笔记:复习基本数据类型的取值范围和计算方法
【跳转复习总结】

1.2C++新增类型

C++11新增类型 描述 示例
auto 让编辑器自动推断类型
  • 简化迭代器:auto it=vec.begin();
  • Lambda表达式:auto add=[](int a,int b){return a+b;};
auto x=10;
decltype 获取表达式的类型
  • 模板编程:auto add(T,a,U b)->decltype(a+b){return a+b;}
  • Lambda返回类型:auto func=[](int a,double b)->decltype(a+b){return a+b;};
  • 依赖表达式类型的变量声明:decltype(vec.size())len=vec.size();
decltype(x) y=20;
initializer_list 初始化列表类型
  • 初始化容器:vectorv={1,2,3}
  • 初始化自定义类型:MyClass(initializer)listargs){}MyClass obj={10,20,30};
  • 作为函数参数:void print(initializer_list< int>vals){}print({1,2,3});
initializer_list list = {1, 2, 3};
tuple 元组类型,存储多个不同类型的值 tuple

笔记:复习迭代器Lambda表达式
【跳转复习总结】

1.3派生类型

派生类型 描述 示例
数组 相同类型元素的集合 int arr[5]={1,2,3};
指针 存储变量内存地址的类型 int* p=&x;
引用 ref和x指向同一块地址 int & ref=x;
函数 函数类型,表示函数名 int func(int a,int b);
结构体 用户自定义数据类型,可包含不同的类型成员 struct Piont{int x;int y;);
用户定义的数据类型,支持封装、继承和多态 class MyClass{};
联合体 多个成员共享同一块内存 union Data{int x;float f;};
枚举 用户定义的整数常量集合 enum Color{RED,GREEN;};

笔记:复习函数指针结构体赋值
【跳转复习总结】

1.4别名

别名 描述 示例
#define 文本替换(预处理器处理),不进行类型检查 #define Myint int
typedef 类型别名(编辑器处理) typedef int Myint;
using 类型别名(编辑器处理) using Myint=int;

1.5标准库类型

标准库类型 描述 示例
string 字符串类型 string s="hello";
vector 动态数组 vector< int >v={1,2,3};
pair 存储两个值的容器 pair< int,float>p(1,2.0);
map 键值对容器 map< int,string>m;
set 唯一值集合 set< int>s={1,2,3};

笔记:复习mapset的区别,理解红黑树的原理
【跳转复习总结】

1.6枚举类型
enum 枚举名{
标识符[=整型常数],
标识符[=整型常数],
……
标识符[=整型常数],
}枚举变量;

例如enum color{red,green,blue}c;
c=blue;

默认情况下,第一个名称为0,第二个为1,以此类推。还可以赋值enum color{red,green=5,blue};

1.7类型转换

常量转换 用于将const类型的对象转换为非const类型的对象。
const int i=10;
int &r=const_cast< int&>(i);
重新解释转换 将一个数据类型的二进制内存表示按另一个数据类型解释,属于强制按位转化
int i=10;
float f=reinterpret_cast< float&>(i);//f=1.4013e-44
静态转换 将一种数据类型的值强制转换为另一种数据类型的值,通常用于类型相似的对象之间的转换,如int转换为float
int i=10;
float f=static_cast< float>(i);
动态转换 用于在继承层次结构中进行向下转换(downcasting)的一种机制,通常用于将一个基类指针或引用转换为派生类指针或引用

二、修饰符和运算符

2.1修饰符

const const定义常量,表示该变量的值不能被修改
static static定义静态变量,表示该变量的作用域仅限于当前文件或当前函数内,不会被其他文件函数访问

2.2运算符

.(点)和->(箭头) 成员运算符用于引用类、结构和共同体的成员
& 指针运算符&返回变量的地址,例如&a给出变量的实际地址
* 指针运算符*表示解引用。指针var的值是内存地址,*var访问该内存地址的存放内容

注:

  • 成员运算符.使用对象是对象实例,如p.name。成员运算符->使用对象是指针指向的对象(相当于先解引用再使用.),即p->name≡(*p).name
  • int *x=&y;int z=*x;其中&y表示获取y的内存地址,指针x的值是y的内存地址;*x表示获取x指向的内存地址的存放内容,z的值是x指向的内存地址的存放内容

三、Lambda函数和表达式

一般形式:[capture] (parameters)->return-type{body} [] (int x,int y)->int{int z=x+y;return z+x;}
特殊情况:[capture] (parameters){body}。“没有返回值”或者“Lambda仅包含一个return语句” []{global_x++;}
[] (int x,int y){return x

在Lambda表达式内可以访问当前作用域的变量,可以通过前面的[]指定

[] 没有定义任何变量。使用未定义变量会引发错误
[x,&y] x以传值方式传入(默认),y以引用方式传入
[&] 任何被使用到的外部变量都隐式地以引用方式加以引用
[=] 任何被使用到的外部变量都隐式地以传值方式加以引用
[&,x] x显示地以传值方式加以引用,其余变量以引用方式加以引用
[=,&z] z显示地以引用方式加以引用,

四、数学函数

double sqrt(double); sqrt(x)返回√x
double pow(double,double); pow(x,y)返回xy
double floor(double); 向下取整(小于或等于参数的最大整数)
double ceil(double); 向上取整(大于或等于参数的最小函数)
int rand(); 随机数函数,通常与srand()time()函数搭配
srand((unsigned)time(NULL));//void srand(unsigned int seed);
int r=rand();

五、字符串

5.1C字符串

strcpy(s1,s2); 复制字符串s2到字符串s1
strcat(s1,s2); 连接字符串s2到字符串s1的末尾
strlen(s1); 返回字符串s1的长度
strcmp(s1,s2); if(s1==s2)return 0;
else if(s1 < s2)return -1;
else return 1;
strchr(s1,ch); 返回一个指针,指向字符串s1中字符ch第一次出现的位置
strstr(s1,s2); 返回一个指针,指向字符串s1中字符串s2第一次出现的位置

5.2C++的string类

str1=str2; 复制字符串s2到字符串s1
str3=str1+str2; 连接字符串s2到字符串s1的末尾
str1.size(); 返回字符串s1的长度

六、结构体

6.1定义处命名
struct type_name{
member_type1 member_name1;
member_type2 member_name2;
member_type3 member_name3;
}object_names;

注释:type_name是结构体类型名,object_names是结构体变量名。结构体成员访问运算符(.),如a.name

6.2typedef关键字
typedef struct Books{
char title[50];
char author[50];
char subject[100];
int book_id;
}Books;
为Book{…}结构体取别名Books,可以用Books来定义Book类型的变量而不需要struct关键字,如Books book1;

复习总结

  1. 复习基本数据类型的取值范围和计算方法(计算机组成原理)
  2. 复习迭代器和Lambda表达式(leetcode)
  3. 复习函数指针、结构体和
  4. 复习mapset的区别,理解红黑树的原理

后记:关于C++的高级教程和重点知识点代码以后可能会继续出,目前只总结基础知识点,前面内容总结自【菜鸟教程】,笔记只摘录了本人的疑难杂症,若有更多问题可以访问该网站,同时欢迎大家指正和批判文章中的内容,如果有格式上的优化建议也欢迎评论

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

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

相关文章

基于骨骼识别的危险动作报警分析系统

基于骨骼识别的危险动作报警分析系统 【包含内容】 【一】项目提供完整源代码及详细注释 【二】系统设计思路与实现说明 【三】基于骨骼识别算法的实时危险行为预警方案 【技术栈】 ①&#xff1a;系统环境&#xff1a;Windows 10/11、macOS Ventura、Ubuntu 20.04 ②&#x…

【双指针】四数之和(medium)

四数之和&#xff08;medium&#xff09; 题⽬描述&#xff1a;解法&#xff08;排序 双指针&#xff09;算法思路&#xff1a; C 算法代码&#xff1a;Java 算法代码&#xff1a; 题⽬链接&#xff1a;18. 四数之和 题⽬描述&#xff1a; 给你⼀个由 n 个整数组成的数组 num…

Flask+Influxdb+grafna构建电脑性能实时监控系统

Influx下载地址&#xff0c;这里下载了以下版本influxdb-1.8.5_windows_amd64.zip 运行前需要先启动Influx数据库&#xff1a; 管理员方式运行cmd->F:->cd F:\influxdb\influxdb-1.8.5-1->influxd -config influxdb.conf&#xff0c;以influxdb.conf配置文件启动数…

如何在Keil中配置国民技术N32G系列MCU开发环境

如何在Keil及Jlink中搭建国民技术N32G系列MCU开发环境 根据自己的MCU型号&#xff08;我这里的型号是N32G452REL7&#xff09;访问国民技术官网&#xff0c;依次从N32G通用MCU-技术资源-固件和软件-软件开发套件&#xff0c;获取对应MCU型号的SDK&#xff0c;也可点击这里从网盘…

微软承认Win11出现极端错误,只能强制关机或重装系统

最近&#xff0c;不少使用 Windows 11 的用户反映&#xff0c;在系统更新后&#xff0c;“Windows Hello”突然失效&#xff0c;原本便捷的人脸识别和PIN登录功能统统无法使用。更糟的是&#xff0c;有人在重置系统后直接被挡在系统门外&#xff0c;这让人不禁发问&#xff1a;…

【android bluetooth 协议分析 02】【bluetooth hal 层详解 1】【uart 介绍】

一、什么是 UART&#xff1f; UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09; 是一种 串行通信协议&#xff0c;它的特点是通信时不需要专门的时钟信号&#xff08;叫做“异步”通信&#xff09;&#xff0c;常用于两个设备之间的简单数据通信&…

天元证券|奶粉行业结构性回暖 乳企竞速全龄化、国际化

在过去几年中&#xff0c;中国婴配粉市场经历了量价齐增&#xff0c;量减价增&#xff0c;量减价减的三个周期。历经多年行业深度洗牌与竞争格局重塑&#xff0c;2024年中国婴配粉市场回暖态势愈发清晰可辨。 日前&#xff0c;包括中国飞鹤、澳优、健合集团在内的多家奶粉股披露…

第3.1节 调用链路分析简介

调用链路&#xff08;Call Chain / Call Path&#xff09; 是程序在执行过程中&#xff0c;按照调用顺序形成的函数、模块或组件之间的依赖关系链条&#xff0c;完整记录了从程序入口到当前执行点的动态调用路径。它反映了代码执行的逻辑流程&#xff0c;是分析程序行为、调试问…

System.Security.Cryptography.CryptographicException“填充无效,无法被移除。”

这个异常通常发生在以下几种情况&#xff1a; 1.密文损坏&#xff1a;密文在传输或存储过程中被篡改或损坏。 2.密钥不匹配&#xff1a;用于解密的密钥与加密时使用的密钥不同。 3.填充模式不匹配&#xff1a;加密时使用的填充模式与解密时指定的填充模式不一致。 4.使用了不正…

【网络入侵检测】Suricata之数据包内容匹配

【作者主页】只道当时是寻常 【专栏介绍】入侵检测。专注网络、主机安全&#xff0c;欢迎关注与评论。 1. 概要 本文详细介绍了网络入侵检测系统&#xff08;如 Suricata&#xff09;中用于检查数据包或流有效载荷的 Payload 关键字。content 用于匹配数据包内容&#xff0c;默…

Spring Boot 整合 Redis 实现点赞功能:从基础到实践

在当今互联网应用开发中&#xff0c;点赞功能几乎成为了各类内容平台的标配。它不仅能增加用户与内容之间的互动&#xff0c;还能直观地反映内容的受欢迎程度。本文将详细介绍如何使用 Spring Boot 整合 Redis 来实现一个简单的文章点赞功能&#xff0c;让你轻松掌握这一实用技…

openGauss DataVec + Dify,快速搭建你的智能助手平台

在当今数字化和智能化的时代&#xff0c;大语言模型&#xff08;LLM&#xff09;的应用正以前所未有的速度改变着各个领域的工作方式和用户体验。Dify 作为一个开源的大语言模型应用开发平台&#xff0c;为开发者们提供了便捷且强大的工具&#xff0c;助力构建从基础智能体到复…

OpenLayers:extent与view extent 介绍

一、范围的概念 1.什么是范围&#xff1f; 在Openlayers中范围&#xff08;Extent&#xff09;是用于表示地理空间区域的一种概念。它通常由一个数字数组构成&#xff0c;数组中的内容为&#xff1a;[最小x坐标&#xff0c;最小y坐标&#xff0c;最大x坐标&#xff0c;最大y坐…

can‘t set boot order in virtualbox

Boot order setting is ignored if UEFI is enabled https://forums.virtualbox.org/viewtopic.php?t99121 如果勾选EFI boot order就是灰色的 传统BIOS就是可选的 然后选中任意介质&#xff0c;通过右边的上下箭头调节顺序&#xff0c;最上面的应该是优先级最高的 然后就…

如何在 Kali 上解决使用 evil-winrm 时 Ruby Reline 的 quoting_detection_proc 警告

在使用 Kali Linux 运行 Ruby 工具&#xff08;例如 evil-winrm&#xff09;时&#xff0c;你可能会遇到以下警告&#xff1a; Warning: Remote path completions is disabled due to ruby limitation: undefined method quoting_detection_proc for module Reline这个警告会导…

工资管理系统的主要功能有哪些

工资管理系统通过自动化薪资计算、税务处理、员工数据管理、报表生成等功能&#xff0c;极大地提升了薪资发放的效率和准确性。在传统的人工薪资管理中&#xff0c;HR人员需要手动计算每位员工的薪资&#xff0c;并确保符合税务要求&#xff0c;极易出错且耗时。而现代工资管理…

C++语言程序设计——02 变量与数据类型

目录 一、变量与数据类型&#xff08;一&#xff09;变量的数据类型&#xff08;二&#xff09;变量命名规则&#xff08;三&#xff09;定义变量&#xff08;四&#xff09;变量赋值&#xff08;五&#xff09;查看数据类型&#xff08;六&#xff09;数据类型的字节长度&…

咋用fliki的AI生成各类视频?AI生成视频教程

最近想制作视频&#xff0c;多方考查了决定用fliki&#xff0c;于是订阅了一年试试&#xff0c;这个AI生成的视频效果来看真是不错&#xff0c;感兴趣的自己官网注册个账号体验一下就知道了。 fliki官网 Fliki生成视频教程 创建账户并登录 首先&#xff0c;访问fliki官网并注…

文章记单词 | 第32篇(六级)

一&#xff0c;单词释义 inferior [ɪnˈfɪəriə(r)] adj. 较差的&#xff1b;次的&#xff1b;下级的&#xff1b;n. 下属&#xff1b;次品joy [dʒɔɪ] n. 欢乐&#xff1b;喜悦&#xff1b;乐趣&#xff1b;乐事&#xff1b;v. 因… 而高兴resemble [rɪˈzembl] vt. 类…

windows上安装Jenkins

1. 下载windows版 jenkins安装包 2. 配置本地安全策略 在 Windows 11/10 上打开本地安全策略。 Secpol.msc 或本地安全策略编辑器是一个 Windows 管理工具&#xff0c;允许您在本地计算机上配置和管理与安全相关的策略。 安全设置-》本地策略-》用户权限分配-》作为服务登录…