手册
目录
集合 (Set) 以排序方式存储多个元素,其中每个元素都是唯一的。
集合中的元素:
要使用集合,需要包含 头文件:
// 包含集合库 #include
使用 set 关键字创建集合,在尖括号 <> 中指定存储值的类型,然后指定集合名称,格式为:
setsetName
// 创建一个名为cars的集合,用于存储字符串 setcars;
如果要在声明时添加元素,可以将元素放在花括号 {} 内的逗号分隔列表中:
// 创建一个名为 cars 的集合,用于存储字符串 set运行实例 »cars = {"Volvo", "BMW", "Ford", "Tesla"}; // 打印集合元素 for (string car : cars) { cout << car << "\n"; }
点击 "运行实例" 按钮查看在线实例
输出:
BMW Ford Tesla Volvo
从上面的结果可以看出,集合中的元素会自动排序。在这个例子中,因为是字符串,所以按字母顺序排序。
如果集合中存储的是整数,则会按数值大小排序:
// 创建一个名为 numbers 的集合,用于存储整数 set运行实例 »numbers = {1, 7, 3, 2, 5, 9}; // 打印集合元素 for (int num : numbers) { cout << num << "\n"; }
点击 "运行实例" 按钮查看在线实例
输出:
1 2 3 5 7 9
注意:集合的类型(如上面两个例子中的 string 和 int)在声明后不能更改。
默认情况下,集合中的元素按升序排序。如果要反转排序顺序,可以在尖括号中使用 greater<type> 函数对象:
// 按降序排序集合元素 set运行实例 »> numbers = {1, 7, 3, 2, 5, 9}; // 打印元素 for (int num : numbers) { cout << num << "\n"; }
点击 "运行实例" 按钮查看在线实例
输出:
9 7 5 3 2 1
注意:greater<type> 中指定的类型必须与集合元素的类型匹配(本例中为 int)。
集合中的元素是唯一的,这意味着它们不能重复或相等。
例如,如果我们尝试在集合中添加两次 "BMW",重复的元素会被忽略:
set运行实例 »cars = {"Volvo", "BMW", "Ford", "BMW", "Tesla"}; // 打印集合元素 for (string car : cars) { cout << car << "\n"; }
点击 "运行实例" 按钮查看在线实例
输出:
BMW Ford Tesla Volvo
要向集合添加元素,可以使用 .insert() 函数:
set运行实例 »cars = {"Volvo", "BMW", "Ford", "Tesla"}; // 添加新元素 cars.insert("BYD"); cars.insert("VW"); cars.insert("Toyota"); cars.insert("Audi");
点击 "运行实例" 按钮查看在线实例
要从集合中移除特定元素,可以使用 .erase() 函数:
set运行实例 »cars = {"Volvo", "BMW", "Ford", "Tesla"}; // 移除元素 cars.erase("Volvo"); cars.erase("Tesla");
点击 "运行实例" 按钮查看在线实例
要移除集合中的所有元素,可以使用 .clear() 函数:
set运行实例 »cars = {"Volvo", "BMW", "Ford", "Tesla"}; // 移除所有元素 cars.clear();
点击 "运行实例" 按钮查看在线实例
要获取集合中元素的数量,可以使用 .size() 函数:
set运行实例 »cars = {"Volvo", "BMW", "Ford", "Tesla"}; cout << cars.size(); // 输出 4
点击 "运行实例" 按钮查看在线实例
使用 .empty() 函数检查集合是否为空。
如果集合为空,.empty() 函数返回 1(true),否则返回 0(false):
set运行实例 »cars; cout << cars.empty(); // 输出 1(集合为空)
点击 "运行实例" 按钮查看在线实例
set运行实例 »cars = {"Volvo", "BMW", "Ford", "Tesla"}; cout << cars.empty(); // 输出 0(不为空)
点击 "运行实例" 按钮查看在线实例
可以使用 for-each 循环遍历集合:
set运行实例 »cars = {"Volvo", "BMW", "Ford", "Tesla"}; for (string car : cars) { cout << car << "\n"; }
点击 "运行实例" 按钮查看在线实例
提示:也可以使用迭代器遍历集合,这将在后续章节中详细介绍。
相关
视频
RELATED VIDEOS
科技资讯
1
2
3
4
5
6
7
8
9
精选课程
共5课时
17.2万人学习
共49课时
77万人学习
共29课时
61.7万人学习
共25课时
39.3万人学习
共43课时
70.9万人学习
共25课时
61.6万人学习
共22课时
23万人学习
共28课时
33.9万人学习
共89课时
125万人学习