CPP基础

变量类型

类型 含义 典型大小 是否有符号 取值范围(约)
short 短整型 2B -3e4 ~ 3e4
int 标准整型 4B -2e9 ~ 2e9
long 长整型 4B/8B 平台相关
long long 更长整型 8B ±9e18
unsigned int 无符号整型 4B 0 ~ 4e9
uint32_t 固定32位整型 4B 0 ~ 2^32-1
int64_t 固定64位整型 8B ±2^63

CPP基础.assets/file-20260330215753438.png600

类型 含义 大小 精度 备注
float 单精度浮点 4B ~7位有效数字 性能较好
double 双精度浮点 8B ~15位有效数字 默认推荐
long double 高精度浮点 8/16B 更高 平台相关
类型 含义 大小 备注
char 字符 1B 本质是整数
signed char 有符号字符 1B 很少用
unsigned char 无符号字符 1B 常用于原始数据 buffer
wchar_t 宽字符 2/4B Unicode
类型 含义 大小 取值
bool 布尔类型 1B true/false
类型 含义 用途
void 无类型 函数无返回值
void* 通用指针 可指向任意类型
修饰符 作用 示例
const 常量 const int a = 10
signed 有符号 signed int
unsigned 无符号 unsigned int
short 更短 short int
long 更长 long int
类型 位数 是否有符号 取值范围
int8_t 8 -128 ~ 127
uint8_t 8 0 ~ 255
int16_t 16 ±3e4
uint16_t 16 0 ~ 65535
int32_t 32 ±2e9
uint32_t 32 0 ~ 4e9
int64_t 64 ±9e18
uint64_t 64 0 ~ 2^64-1
固定型,位数“严格固定”的整数类型,不管在什么机器 / 操作系统 / 编译器上,它的大小都不会变。

Struct

CPP基础.assets/file-20260330222048307.png600

CPP基础.assets/file-20260330223758221.png600

基本语法

输入输出

int a;
cin >> a;

cout << "value=" << a << endl;

条件语句

if

if (a > 0) {
    cout << "positive";
} else if (a == 0) {
    cout << "zero";
} else {
    cout << "negative";
}

switch

switch (a) {
    case 1: cout << "one"; break;
    case 2: cout << "two"; break;
    default: cout << "other";
}

循环

for

for (int i = 0; i < 5; i++) {  
    cout << i << endl;  
}

while

int i = 0;  
while (i < 5) {  
    i++;  
}

range-based for

for (auto x : v)

continue
break

数组

int arr[3] = {1, 2, 3};

运算符

类别 运算符 示例 说明
算术运算 + - * / % a + b 基本数学运算
自增自减 ++ -- i++ / --i +1 / -1
赋值 = a = 10 赋值
复合赋值 += -= *= /= %= a += 2 a = a + 2
比较运算 == != > < >= <= a > b 返回 bool
逻辑运算 && | | ! a > 0 && b > 0 与/或/非
位运算 & | ^ ~ a & b 按位操作
位移 << >> a << 2 左移/右移
条件运算 ?: a>0 ? x : y 三元表达式
sizeof sizeof sizeof(int) 类型/变量大小
地址运算 & &a 取地址
解引用 * *p 指针取值
成员访问 . obj.x struct/class 成员
指针访问 -> ptr->x 指针访问成员
下标 [] arr[i] 数组/容器访问
函数调用 () f(x) 调用函数

Pointer

指针,引用

容器

list

CPP基础.assets/file-20260330231647995.png600

类别 用法/函数 示例代码 说明
定义 list<T> list<int> l; 定义空链表
初始化 初始化列表 list<int> l = {1,2,3}; 直接赋值
插入尾部 push_back l.push_back(4); 尾部插入
插入头部 push_front l.push_front(0); 头部插入
删除尾部 pop_back l.pop_back(); 删除最后一个
删除头部 pop_front l.pop_front(); 删除第一个
访问头尾 front / back l.front(), l.back() 访问首尾元素
判空 empty l.empty() 是否为空
大小 size l.size() 元素个数
遍历 range for for(auto x : l) 推荐遍历方式
迭代器 iterator auto it = l.begin(); 指向元素
插入中间 insert l.insert(it, 10); 在迭代器前插入
删除元素 erase l.erase(it); 删除某位置
查找 find(需algorithm) find(l.begin(), l.end(), x) 查找元素
排序 sort l.sort(); 链表排序(内部实现)
反转 reverse l.reverse(); 反转链表
清空 clear l.clear(); 清空所有元素
有序列表拼接 merge 必须先排序
迭代器入口 begin auto it = l.begin(); 指向第一个元素
迭代器出口 end auto ed = l.end(); 指向“尾后”(不是最后一个)
删除元素 remove l.remove(3); 删除所有等于 value 的元素
插入list splice l1.splice(it, l2); 把 l2 所有元素插入到 l1 的 it 位置

vector

类别 用法/函数 示例代码 说明
定义 vector<T> v; vector<int> v; 定义空向量
初始化 初始化列表 / 指定大小 vector<int> v = {1,2,3}; 直接赋值
vector<int> v(5); 默认值 0 初始化长度为5
尾部插入 push_back v.push_back(10); 在尾部添加元素
尾部删除 pop_back v.pop_back(); 删除最后一个元素
访问元素 下标 / at v[0], v.at(0); 下标不检查越界 / at 会检查越界
首尾元素 front / back v.front(), v.back(); 访问首尾元素
判空 empty v.empty() 是否为空
大小 size / capacity / resize v.size(), v.capacity(), v.resize(10) 元素个数 / 容量 / 改变大小
遍历 range-based for / iterator for(auto x : v) 推荐遍历方式
迭代器 begin / end / rbegin / rend auto it = v.begin(); 正序 / 反序迭代器
插入 insert v.insert(v.begin()+1, 5); 在指定位置插入元素
删除 erase v.erase(v.begin()+1); 删除指定位置元素
清空 clear v.clear(); 清空所有元素
排序 sort (algorithm) sort(v.begin(), v.end()); STL 排序
反转 reverse (algorithm) reverse(v.begin(), v.end()); STL 反转
查找 find (algorithm) auto it = find(v.begin(), v.end(), 3); 查找元素
容量管理 reserve / shrink_to_fit v.reserve(100); v.shrink_to_fit(); 预分配 / 收缩内存
查找 find (algorithm) auto it = find(v.begin(), v.end(), 3); 查找元素 3,返回迭代器,找不到返回 v.end()
累加 accumulate (numeric) int sum = accumulate(v.begin(), v.end(), 0); 累加所有元素,初始值 0

元素遍历方法

std::vector<int> v = {1,2,3,4,5};  
for(size_t i=0; i<v.size(); ++i)  
    std::cout << v[i] << " ";
std::vector<int> v = {1,2,3,4,5};  
for(auto it=v.begin(); it!=v.end(); ++it)  
    std::cout << *it << " ";
std::vector<int> v = {1,2,3,4,5};  
for(auto &x : v)  
    x += 1; // 可以直接修改元素

stack

map

set

queue

deque

array

iterator

advance
prev
next

lambda

algorithm

sort

find

overload

class

STL

numeric