C++ 中的 set
是一种关联容器,它包含一组唯一的对象。以下是 set
的一些主要特点:
- 唯一性:
set
中的元素是唯一的,即每个元素只能出现一次。如果你尝试插入一个已经存在的元素,set
不会对其进行任何操作。 - 自动排序:
set
中的元素会自动按照某种排序规则进行排序。默认情况下,这个排序规则是按键(key)的自然顺序,但你也可以提供自定义的比较函数或对象来改变排序规则。 - 有序性:由于
set
中的元素是自动排序的,因此你可以通过迭代器遍历set
,并且迭代器会按照元素的顺序访问它们。 - 不支持下标运算符:与
vector
和array
不同,set
不支持下标运算符(operator[]
)。你不能像访问数组元素那样访问set
中的元素。要访问set
中的元素,你需要使用迭代器或者find
函数。 - 动态大小:与
array
不同,set
是一个动态容器,它可以根据需要自动调整大小。 - 内存管理:
set
的内存管理是自动的,你不需要(也不能)手动分配或释放内存。 - 常量成员函数:
set
提供了一些常量成员函数,如empty()
、size()
、find()
等,这些函数可以在常量对象上调用。 - 迭代器:
set
提供了双向迭代器,你可以使用这些迭代器遍历set
中的元素。 - 范围循环:C++11 引入了基于范围的循环(range-based for loop),你可以使用这种循环来遍历
set
中的元素,而无需显式地使用迭代器。
下面是一个简单的 set
示例:
#include#include int main() { std::set mySet = {1, 2, 3, 4, 5}; for (int num : mySet) { std::cout << num << " "; } return 0; }
这个示例创建了一个包含整数的 set
,并使用基于范围的循环遍历并打印其中的元素。注意,由于 set
中的元素是自动排序的,因此输出的数字将按照升序排列。