常用容器 序列容器
vector: 动态数组,随机插入/删除 O(n),随机访问 O(1),尾插 O(1)
array: 静态数组,不支持插入/删除,随机访问 O(1)
deque: 双端队列,头尾插入/删除 O(1),随机访问 O(1),中间插入/删除 O(n)
list: 双向链表,插入/删除 O(1),不支持随机访问
forward_list: 单向链表,插入/删除 O(1),不支持随机访问
关联容器(底层实现为 红黑树 )
set: 有序集合,插入/删除/查找 O(logn)
map: 有序映射,插入/删除/查找 O(logn)
multiset: 有序多重集合,插入/删除/查找 O(logn)
multimap: 有序多重映射,插入/删除/查找 O(logn)
无序容器(底层实现为 哈希表 )
unordered_set: 无序集合,插入/删除/查找 O(1)
unordered_map: 无序映射,插入/删除/查找 O(1)
unordered_multiset: 无序多重集合,插入/删除/查找 O(1)
unordered_multimap: 无序多重映射,插入/删除/查找 O(1)
容器适配器
stack: 栈,后进先出,只能在栈顶插入/删除元素
queue: 队列,先进先出,只能在队尾插入,在队头删除元素
priority_queue: 优先队列,元素按照一定规则排序,每次取出的是最大/最小元素,底层实现为堆
vector#include <iostream> #include <vector> using namespace std; // vector使用示例 int main() { vector<int> vec = {1, 2, 3, 4, 5}; // 尾部插入元素:复杂度为O(1) vec.push_back(6); // 尾部删除元素:复杂度为O(1) vec.pop_back(); // 随机插入和删除元素:复杂度为O(n) vec.insert(vec.begin() + 1, 3); vec.erase(vec.begin() + 1); // vector的大小 cout << vec.size() << endl; // 获取vector的容量 cout << vec.capacity() << endl; // 判断vector是否为空 cout << vec.empty() << endl; // 获取vector的第一个元素和最后一个元素 cout << vec.front() << endl; cout << vec.back() << endl; // 访问指定位置的元素 cout << vec[2] << endl; cout << vec.at(2) << endl; // at函数会检查索引是否越界,更安全 vector<int> vec2 = {7, 8, 9, 10}; vec.swap(vec2); // 交换两个vector的元素 // 清空vector vec.clear(); } vector 常用的成员函数:
...