C++ 集合
C++ 集合
集合存储唯一元素,其中元素
- 自动按升序排序。
- 是唯一的,这意味着忽略相等或重复的值。
- 可以添加或删除,但不能更改现有元素的值。
- 不能通过索引号访问,因为顺序基于排序而不是索引。
要使用集合,您必须包含 <set>
头文件
// 包含集合库
#include <set>
创建集合
要创建集合,请使用 set
关键字,并指定它应该存储在尖括号 <>
中的值的类型,然后是集合的名称,例如:set<类型> 集合名称
。
例子
// 创建一个名为 cars 的集合,它将存储字符串
set<string> cars;
如果要在声明时添加元素,请将它们放在逗号分隔的列表中,放在花括号 {}
中
例子
// 创建一个名为 cars 的集合,它将存储字符串
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 打印集合元素
for (string car : cars) {
cout << car << "\n";
}
输出将是
BMW
Ford
Mazda
Volvo
正如您从上面的结果中看到的,集合中的元素会自动排序。在本例中,按字母顺序排序,因为我们正在使用字符串。
如果在集合中存储整数,则返回的值将按数值排序
例子
// 创建一个名为 numbers 的集合,它将存储整数
set<int> numbers = {1, 7, 3, 2, 5, 9};
// 打印集合元素
for (int num : numbers) {
cout << num << "\n";
}
输出将是
1
2
3
5
7
9
注意:集合的类型(例如上面的例子中的 string
和 int
)在声明后不能更改。
按降序排序集合
默认情况下,集合中的元素按升序排序。如果要反转顺序,可以在尖括号中使用 greater<类型>
函数对象,如下所示
例子
// 按降序排序集合中的元素
set<int, greater<int>> numbers = {1, 7, 3, 2, 5, 9};
// 打印元素
for (int num : numbers) {
cout << num << "\n";
}
输出将是
9
7
5
3
2
1
注意:在 greater<类型> 中指定的类型必须与集合中元素的类型匹配(本例中为 int
)。
唯一元素
集合中的元素是唯一的,这意味着它们不能重复或相等。
例如,如果我们尝试在集合中添加两次 "BMW",则会忽略重复的元素
例子
set<string> cars = {"Volvo", "BMW", "Ford", "BMW", "Mazda"};
// 打印集合元素
for (string car : cars) {
cout << car << "\n";
}
输出将是
BMW
Ford
Mazda
Volvo
添加元素
要向集合添加元素,可以使用 .insert()
函数
例子
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 添加新元素
cars.insert("Tesla");
cars.insert("VW");
cars.insert("Toyota");
cars.insert("Audi");
自己尝试 »
删除元素
要从集合中删除特定元素,可以使用 .erase()
函数
例子
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
// 删除元素
cars.erase("Volvo");
cars.erase("Mazda");
自己尝试 »
要从集合中删除所有元素,可以使用 .clear()
函数
查找集合的大小
要找出集合有多少个元素,可以使用 .size()
函数
检查集合是否为空
使用 .empty()
函数来确定集合是否为空。
如果集合为空,则 .empty()
函数返回 1
(true),否则返回 0
(false)
遍历集合
您可以使用for-each 循环遍历集合
例子
set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
for (string car : cars) {
cout << car << "\n";
}
自己尝试 »
提示:还可以使用迭代器遍历集合,您将在后面的章节中了解更多信息。