📅  最后修改于: 2023-12-03 15:35:31.665000             🧑  作者: Mango
unordered_set
是 C++ STL 标准库中的一种容器,它可以存储一组独特的元素(不重复),并对它们提供高效的查询功能。中文翻译为“无序集合”。
在内部,unordered_set
使用哈希表实现,它使用哈希函数将元素映射到一个存储桶中,其中每个存储桶存储一个或多个元素。如果桶中的元素数量增加,则哈希表将重新进行调整。
因此,unordered_set
在插入和查找元素方面非常高效,时间复杂度为 O(1)。但是,与此同时,由于哈希函数本身具有随机性,因此 unordered_set
中元素的存储顺序是不确定的。
使用 unordered_set
首先需要包含头文件 #include<unordered_set>
,然后通过以下方式定义一个 unordered_set
:
unordered_set<int> mySet;
定义一个 unordered_set
后,可以使用 insert()
函数插入元素,使用 erase()
函数删除元素,使用 find()
函数查找元素。
mySet.insert(10);
mySet.insert(20);
mySet.erase(10);
auto it = mySet.find(20);
在以上示例中,auto
根据赋值语句自动推导出 it
的类型为 unordered_set<int>::iterator
。使用 *it
可以获取迭代器指向的元素。
可以使用迭代器遍历 unordered_set
中的元素,例如:
unordered_set<int> mySet = {5, 10, 20};
for(auto it = mySet.begin(); it != mySet.end(); it++){
cout << *it << " ";
}
// Output: 20 5 10 (无序)
也可以使用 for
循环遍历 unordered_set
中的元素,例如:
unordered_set<int> mySet = {5, 10, 20};
for(int x: mySet){
cout << x << " ";
}
// Output: 20 5 10 (无序)
unordered_set
是一个非常有用的容器。它可以高效地存储一组独特的元素,并提供高效的查询功能。但是,由于它的元素存储顺序是无序的,所以在一些场景中可能不适用。