std:: unordered_set
|
定义于头文件
<unordered_set>
|
||
|
template
<
class
Key,
|
(1) | (C++11 起) |
|
namespace
pmr
{
template
<
|
(2) | (C++17 起) |
std::unordered_set
是一个关联容器,包含一组类型为
Key
的唯一对象。搜索、插入和删除操作具有平均常数时间复杂度。
在内部,元素不会按特定顺序排序,而是被组织到多个桶中。元素被分配到哪个桶完全取决于其值的哈希值。这样可以快速访问单个元素,因为一旦计算出哈希值,就能直接定位到元素所在的精确桶。
容器元素可能无法被修改(即使通过非 const 迭代器),因为修改可能会改变元素的哈希值并破坏容器。
std::unordered_set
满足
Container
、
AllocatorAwareContainer
和
UnorderedAssociativeContainer
的要求。
std::unordered_set
的所有成员函数均为
constexpr
:可以在常量表达式求值过程中创建和使用
std::unordered_set
对象。
然而,
|
(C++26 起) |
目录迭代器失效
注释
模板参数
成员类型
成员函数
非成员函数
注释
成员类型
示例
运行此代码
#include <iostream> #include <unordered_set> void print(const auto& set) { for (const auto& elem : set) std::cout << elem << ' '; std::cout << '\n'; } int main() { std::unordered_set<int> mySet{2, 7, 1, 8, 2, 8}; // 创建整型集合 print(mySet); mySet.insert(5); // 向集合中插入元素5 print(mySet); if (auto iter = mySet.find(5); iter != mySet.end()) mySet.erase(iter); // 删除迭代器指向的元素 print(mySet); mySet.erase(7); // 删除元素7 print(mySet); } 可能的输出: 8 1 7 2 5 8 1 7 2 8 1 7 2 8 1 2 缺陷报告以下行为变更缺陷报告被追溯应用于先前发布的C++标准。
另请参阅
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||