C++ 标准模板库( STL,Standard Template Library )提供了多种容器,用于存储和管理数据。
-
vector(动态数组)
-
stack(栈)
-
queue(队列)
-
priority_queue(优先队列)
-
map(映射)
-
set(集合)
以上是基本的 STL 容器
另外,还包括: -
multiset 有序集合,允许重复元素
-
multimap 有序键值对,允许重复键
-
unordered_set 无序集合,元素唯一
-
unordered_multiset 无序集合,允许重复元素
-
unordered_map 无序键值对,键唯一
-
unordered_multimap 无序键值对,允许重复键
下列是其的用法:(这里就不具体展开讲解所有的了)
vecor:
动态数组,支持随机访问
vector<int> v = {1, 2, 3};
v.push_back(4); // 添加元素
v.pop_back(); // 删除末尾元素
v.size(); // 获取大小
v[0]; // 访问元素
map:
键值对容器,基于红黑树实现
map<string, int> m;
m["apple"] = 10; // 插入键值对
m["banana"] = 20;
m.find("apple"); // 查找键
m.erase("banana"); // 删除键值对
stack:
后进先出( LIFO )容器(栈)
stack<int> s;
s.push(1); // 压入元素
s.pop(); // 弹出元素
s.top(); // 访问栈顶元素
queue:
先进先出( FIFO )容器(队列)
queue<int> q;
q.push(1); // 入队
q.pop(); // 出队
q.front(); // 访问队首元素
set:
set<int> s; // 定义一个存储 int 类型的 set
遍历方法:
for (auto it = mySet.begin(); it != mySet.end(); ++it) {
std::cout << *it << " "; // 输出
}
set 常用函数:
函数 | 描述 |
---|---|
insert(value) |
插入元素 |
erase(value) |
删除元素 |
find(value) |
查找元素,返回迭代器 |
size() |
返回元素个数 |
empty() |
判断是否为空 |
clear() |
清空所有元素 |
begin() |
返回指向第一个元素的迭代器 |
end() |
返回指向末尾的迭代器 |
lower_bound(key) |
返回第一个不小于 key 的元素的迭代器 |
upper_bound(key) |
返回第一个大于 key 的元素的迭代器 |
以上就是一些基本的 STL 容器 |