Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

C++ 教程

C++ 主页 C++ 简介 C++ 入门 C++ 语法 C++ 输出 C++ 注释 C++ 变量 C++ 用户输入 C++ 数据类型 C++ 运算符 C++ 字符串 C++ 数学 C++ 布尔值 C++ if...Else C++ Switch C++ While 循环 C++ For 循环 C++ Break/Continue C++ 数组 C++ 结构体 C++ 枚举 C++ 引用 C++ 指针

C++ 函数

C++ 函数 C++ 函数参数 C++ 函数重载 C++ 范围 C++ 递归

C++ 类

C++ 面向对象编程 C++ 类/对象 C++ 类方法 C++ 构造函数 C++ 访问修饰符 C++ 封装 C++ 继承 C++ 多态 C++ 文件 C++ 异常 C++ 日期

C++ 数据结构

C++ 数据结构 & STL C++ 向量 C++ 列表 C++ 栈 C++ 队列 C++ 双端队列 C++ 集合 C++ 映射 C++ 迭代器 C++ 算法

C++ 如何

C++ 加两个数字 C++ 随机数

C++ 参考

C++ 参考 C++ 关键字 C++ <iostream> C++ <fstream> C++ <cmath> C++ <string> C++ <cstring> C++ <ctime> C++ <vector> C++ <algorithm>

C++ 例子

C++ 例子 C++ 现实生活中的例子 C++ 编译器 C++ 练习 C++ 问答 C++ 证书


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
自己尝试 »

注意:集合的类型(例如上面的例子中的 stringint)在声明后不能更改。


按降序排序集合

默认情况下,集合中的元素按升序排序。如果要反转顺序,可以在尖括号中使用 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() 函数

例子

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

// 删除所有元素
cars.clear();
自己尝试 »

查找集合的大小

要找出集合有多少个元素,可以使用 .size() 函数

例子

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.size();  // 输出 4
自己尝试 »

检查集合是否为空

使用 .empty() 函数来确定集合是否为空。

如果集合为空,则 .empty() 函数返回 1true),否则返回 0false

例子

set<string> cars;
cout << cars.empty();  // 输出 1 (集合为空)
自己尝试 »

例子

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};
cout << cars.empty();  // 输出 0 (不为空)
自己尝试 »

遍历集合

您可以使用for-each 循环遍历集合

例子

set<string> cars = {"Volvo", "BMW", "Ford", "Mazda"};

for (string car : cars) {
  cout << car << "\n";
}
自己尝试 »

提示:还可以使用迭代器遍历集合,您将在后面的章节中了解更多信息。



×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.