C++语言基础知识
STL 容器(AI 辅助生成、待检错)
1. vector
- 头文件:
<vector>
- 描述: 动态数组,能够自动调整大小
- 底层结构: 数组
- 插入操作:
emplace_back
,insert
- 访问操作:
front
,back
,operator[]
,at
- 删除操作:
pop_back
,erase
- 应用场景: 当需要快速随机访问元素且不需要频繁在中间位置插入或删除元素时
- string,头文件
,使用类 vector 的数据结构
2. list
- 头文件:
<list>
- 描述: 双向链表
- 底层结构: 双向链表
- 插入操作:
emplace_front
,emplace_back
,insert
- 访问操作:
front
,back
- 删除操作:
pop_front
,pop_back
,remove
,erase
- 应用场景: 需要频繁地在列表的任意位置进行插入和删除操作时
3. queue
- 头文件:
<queue>
- 描述: 队列,先进先出(FIFO)的数据结构。
- 底层结构: 通常由适配器实现,底层使用其他容器如
deque
或list
- 插入操作:
push
- 访问操作:
front
,back
- 删除操作:
pop
- 应用场景: 实现 FIFO 操作逻辑,例如任务调度。
4. priority_queue
- 头文件:
<queue>
- 描述: 优先级队列,总是弹出具有最高优先级的元素。
- 底层结构: 通常由适配器实现,底层使用堆数据结构,如
std::vector
作为基础容器。 - 插入操作:
push
- 访问操作:
top
- 删除操作:
pop
- 应用场景: 需要快速获取最高优先级元素的场景。
5. deque (double-ended queue)
- 头文件:
<deque>
- 描述: 双端队列,可以在两端进行高效插入和删除
- 底层结构: 分配的连续内存块组成的数组
- 插入操作:
emplace_front
,emplace_back
,push_front
,push_back
,insert
- 访问操作:
front
,back
,operator[]
,at
- 删除操作:
pop_front
,pop_back
,erase
- 应用场景: 当需要从两端高效地添加或移除元素时
6. stack
- 头文件:
<stack>
- 描述: 栈,后进先出(LIFO)的数据结构。
- 底层结构: 通常由适配器实现,底层使用其他容器如
vector
或deque
- 插入操作:
push
- 访问操作:
top
- 删除操作:
pop
- 应用场景: 实现 LIFO 操作逻辑,例如表达式求值。
7. set
- 头文件:
<set>
- 描述: 关联容器,存储唯一键值,自动排序
- 底层结构: 平衡二叉树 (通常为红黑树)
- 插入操作:
emplace
,insert
- 访问操作:
find
,lower_bound
,upper_bound
- 删除操作:
erase
- 应用场景: 当需要维护一个有序集合且不允许重复元素时
8. map
- 头文件:
<map>
- 描述: 关联容器,存储键值对,键值唯一并自动排序
- 底层结构: 平衡二叉树 (通常为红黑树)
- 插入操作:
emplace
,insert
- 访问操作:
find
,lower_bound
,upper_bound
- 删除操作:
erase
- 应用场景: 当需要通过键来高效查找、插入和删除数据时
9. unordered_set
- 头文件:
<unordered_set>
- 描述: 哈希表实现的容器,存储唯一键值
- 底层结构: 哈希表
- 插入操作:
emplace
,insert
- 访问操作:
find
,count
- 删除操作:
erase
- 应用场景: 当需要快速查找和插入操作而不关心顺序时
10. unordered_map
- 头文件:
<unordered_map>
- 描述: 哈希表实现的容器,存储键值对,键值唯一
- 底层结构: 哈希表
- 插入操作:
emplace
,insert
- 访问操作:
find
,count
- 删除操作:
erase
- 应用场景: 当需要通过键来快速查找数据而不关心顺序时
11. pair
- 头文件:
<utility>
- 描述: 存储两个元素的简单容器
- 底层结构: 两个成员变量
- 插入操作: 构造函数初始化
- 访问操作:
first
,second
- 删除操作: N/A (不可删除)
- 应用场景: 当需要同时处理两个相关数据时
12. bitset
- 头文件:
<bitset>
- 描述: 存储位序列
- 底层结构: 内部实现细节依赖于实现
- 插入操作: 构造函数初始化,
set
- 访问操作:
test
,operator[]
- 删除操作:
reset
- 应用场景: 高效处理位操作,例如用于压缩算法、位图等
13. array
- 头文件:
<array>
- 描述: 固定大小的数组容器。
- 底层结构: 数组
- 插入操作: N/A (不支持插入操作)
- 访问操作:
operator[]
,at
,front
,back
- 删除操作: N/A (不支持删除操作)
- 应用场景: 当需要固定大小的数组且不需要动态调整大小时。
无符号和有符号
1 | unsigned short int i=(unsigned short int)(-1234); |