📅  最后修改于: 2023-12-03 14:59:45.391000             🧑  作者: Mango
在 C++ STL 中,有很多容器可以用来存储数据。其中,集合和数组是两种最常用的容器之一。在本文中,我们将会简要介绍这两种容器。
集合是一种不允许重复元素的容器。C++ STL 提供了两种集合:set 和 unordered_set。
set 是一种基于红黑树实现的有序集合。
可以如下定义一个 set:
#include <set>
std::set<int> s; // 定义一个空的 set
插入元素可以使用 insert() 方法:
// 插入一个元素
s.insert(42);
// 向 set 中插入多个元素
s.insert({1, 2, 3, 4, 5});
删除元素使用 erase() 方法:
// 删除一个元素
s.erase(42);
// 删除一个范围内的元素
s.erase(s.begin(), s.end());
使用迭代器进行遍历:
for (auto it = s.begin(); it != s.end(); ++it) {
std::cout << *it << " ";
}
set 的一些特性:
unordered_set 是一种基于哈希表实现的无序集合。
可以如下定义一个 unordered_set:
#include <unordered_set>
std::unordered_set<int> s; // 定义一个空的 unordered_set
插入元素可以使用 insert() 方法:
// 插入一个元素
s.insert(42);
// 向 unordered_set 中插入多个元素
s.insert({1, 2, 3, 4, 5});
删除元素使用 erase() 方法:
// 删除一个元素
s.erase(42);
// 删除一个范围内的元素
s.erase(s.begin(), s.end());
使用迭代器进行遍历:
for (auto it = s.begin(); it != s.end(); ++it) {
std::cout << *it << " ";
}
unordered_set 的一些特性:
数组是一种可以容纳一组固定大小元素的容器。在 C++ STL 中,有两种数组:array 和 vector。
array 是一种用于存储固定大小元素的容器。与其他容器不同,array 中的元素数量是固定的。
可以如下定义一个 array:
#include <array>
std::array<int, 5> a; // 定义一个大小为 5 的空 array
可以使用下标操作符 []:
a[0] = 42;
a[1] = 3;
a[2] = 14;
a[3] = 15;
a[4] = 92;
或者使用 at() 方法:
a.at(0) = 42;
a.at(1) = 3;
a.at(2) = 14;
a.at(3) = 15;
a.at(4) = 92;
因为 array 中的元素数量是固定的,所以无法删除元素。
使用下标操作符或迭代器进行遍历:
for (int i = 0; i < a.size(); ++i) {
std::cout << a[i] << " ";
}
for (auto it = a.begin(); it != a.end(); ++it) {
std::cout << *it << " ";
}
for (int& x : a) {
std::cout << x << " ";
}
array 的一些特性:
vector 是一种动态数组,可以容纳任意数量的元素。
可以如下定义一个 vector:
#include <vector>
std::vector<int> v; // 定义一个空的 vector
可以使用 push_back() 方法:
v.push_back(42);
v.push_back(3);
v.push_back(14);
v.push_back(15);
v.push_back(92);
或者使用 insert() 方法:
v.insert(v.begin(), 42); // 在起始位置插入一个元素
v.insert(v.end(), {1, 2, 3}); // 在末尾插入多个元素
可以使用 pop_back() 方法:
v.pop_back(); // 删除最后一个元素
或者使用 erase() 方法:
v.erase(v.begin()); // 删除起始位置的元素
v.erase(v.begin() + 2); // 删除偏移量为 2 的元素
使用下标操作符或迭代器进行遍历:
for (int i = 0; i < v.size(); ++i) {
std::cout << v[i] << " ";
}
for (auto it = v.begin(); it != v.end(); ++it) {
std::cout << *it << " ";
}
for (int& x : v) {
std::cout << x << " ";
}
vector 的一些特性:
在本文中,我们简要介绍了 C++ STL 中的集合和数组。集合是一种不允许重复元素的容器,有 set 和 unordered_set 两种实现;数组则是一种可以容纳固定或动态大小元素的容器,有 array 和 vector 两种实现。根据实际需要,可以选择合适的容器来存储数据。