容器

支持泛型
vector<int> vi;
vector<double> vd;
vector<string> vs;
list<int> li;
list<double> ld;
list<string> ls;
map<int,string> mis;
map<string,int> msi;
STL容器优劣对比:
---------------------------------------------------------------------------------
| 容器类型 | 优点 | 缺点 | 适用场景 |
|-------------------|------------------------------------------------|------------------------------------------------|----------------------------------------|
| `std::vector` | 1. 随机访问速度快,O(1) | 1. 在中间插入/删除元素慢,O(n) | 1. 需要频繁随机访问元素的场景 |
| | 2. 在末尾插入/删除元素快,O(1)(平均情况) | 2. 内存分配可能不连续,导致缓存不友好 | 2. 元素数量变化不大的场景 |
| `std::list` | 1. 在任意位置插入/删除元素快,O(1) | 1. 随机访问慢,O(n) | 1. 需要频繁在中间插入/删除元素的场景 |
| | 2. 内存分配连续,缓存友好 | 2. 存储开销大,每个元素需要额外存储指针 | |
| `std::deque` | 1. 随机访问速度快,O(1) | 1. 在中间插入/删除元素慢,O(n) | 1. 需要频繁在两端插入/删除元素的场景 |
| | 2. 在两端插入/删除元素快,O(1) | 2. 内存分配可能不连续,导致缓存不友好 | |
| `std::set` | 1. 元素唯一,自动排序 | 1. 插入/删除/查找元素慢,O(log n) | 1. 需要元素唯一且有序的场景 |
| | 2. 红黑树实现,平衡性好 | 2. 存储开销大,每个元素需要额外存储指针 | |
| `std::map` | 1. 键值对存储,键唯一,自动排序 | 1. 插入/删除/查找元素慢,O(log n) | 1. 需要键值对存储且键有序的场景 |
| | 2. 红黑树实现,平衡性好 | 2. 存储开销大,每个元素需要额外存储指针 | |
| `std::unordered_set` | 1. 元素唯一,无序 | 1. 插入/删除/查找元素慢,O(1)(平均情况) | 1. 需要元素唯一且无序的场景 |
| | 2. 哈希表实现,插入/删除/查找快 | 2. 哈希冲突可能导致性能下降 | |
| `std::unordered_map` | 1. 键值对存储,键唯一,无序 | 1. 插入/删除/查找元素慢,O(1)(平均情况) | 1. 需要键值对存储且键无序的场景 |
| | 2. 哈希表实现,插入/删除/查找快 | 2. 哈希冲突可能导致性能下降 | |
---------------------------------------------------------------------------------
Vector
std::vector是一个非常常用的容器,用于存储一组有序的元素。它类似于动态数组,能够自动调整大小,并且提供了许多方便的成员函数来操作和管理这些元素。
头文件:
#include
初始化:
std::vector<int> vec1; // 空vector
std::vector<int> vec2(5); // 包含5个默认初始化的元素
std::vector<int> vec3(5, 10); // 包含5个值为10的元素
std::vector<int> vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表
添加元素:
vec1.push_back(10);
vec1.push_back(20);
访问元素:
可以使用下标运算符[]或at函数来访问元素:
int firstElement = vec1[0]; // 访问第一个元素
int secondElement = vec1.at(1); // 访问第二个元素
C++11 STL Vector详解

最低0.47元/天 解锁文章
1770

被折叠的 条评论
为什么被折叠?



