unordered_set
是 C++ 中的标准库容器,它是一个存储唯一元素的集合,其中每个元素的位置不由元素的值决定。unordered_set
基于哈希表实现,因此它能够提供平均常数时间复杂度的插入、删除和查找操作。接下来,我将从基本用法、特点和注意事项、以及示例代码三个方面来讲解 unordered_set
。
基本用法
- 头文件:使用
unordered_set
前,需要包含头文件<unordered_set>
。 - 声明:可以通过
std::unordered_set<T>
声明一个集合,其中T
是存储元素的类型。 - 操作:
.insert(value)
:向集合中插入元素value
。.erase(value)
:从集合中移除元素value
。.find(value)
:查找元素value
,如果找到则返回一个指向该元素的迭代器,否则返回end()
。.size()
:返回集合中元素的数量。.clear()
:清空集合中的所有元素。
特点和注意事项
- 唯一性:
unordered_set
中的每个元素都必须是唯一的,即不允许重复的元素。 - 无序性:元素在
unordered_set
中的存储是无序的,不保证任何特定的元素顺序。 - 性能考虑:虽然
unordered_set
提供了平均常数时间复杂度的操作性能,但是哈希冲突和重哈希操作可能会导致性能下降。 - 自定义类型:如果要在
unordered_set
中存储自定义类型的对象,需要定义相应的哈希函数和相等判断函数。
示例代码
下面的示例展示了如何使用 unordered_set
来存储和操作一组整数:
1 |
|
这段代码首先创建了一个 unordered_set
的实例 mySet
并插入了几个整数。注意到尝试插入重复的元素(如数字 1
)不会增加新元素。接着,代码演示了如何查找、删除元素和获取集合的大小。