unorder_set
时间: 2024-06-19 10:03:08 浏览: 19
unordered_set是C++ STL中的一个容器,它是一个无序的集合,其中的元素都是唯一的。与set相似,unordered_set也支持高效的查找、插入和删除操作,但是在内部实现上使用了哈希表来存储元素,因此元素是无序的。使用unordered_set可以提高查找效率,但是牺牲了元素顺序的保证。
下面是unordered_set的一些主要特点:
- 内部使用哈希表实现,插入、删除、查找的平均时间复杂度为O(1)。
- 无序,元素的顺序不受保证。
- 元素唯一,每个元素只能出现一次。
- 不支持下标操作,只能通过迭代器访问元素。
使用unordered_set需要包含头文件<unordered_set>,并且可以使用std::unordered_set来定义一个无序集合。
相关问题
unorder_set的遍历
unorder_set是C++ STL中的一个关联容器,其中的元素不按顺序排列而是按照哈希值排序。由于其内部实现是哈希表,因此遍历时不能按照顺序访问元素。如果要遍历,可以使用迭代器,代码如下:
```
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> myset = {1, 2, 3, 4, 5};
// 遍历集合中的所有元素
for (auto it=myset.begin(); it!=myset.end(); ++it) {
cout << *it << " ";
}
return 0;
}
```
其中,auto关键字用于自动推导迭代器类型,myset.begin()返回一个指向第一个元素的迭代器,myset.end()返回一个指向末尾的迭代器。遍历时,只要迭代器没有到达末尾,就可以对其进行操作。
以上代码输出结果为:1 2 3 4 5。
C++里的unorder_set
`unordered_set` 是 C++ STL 中的一个容器,它是基于哈希表实现的,可以用来存储一组无序的、不重复的元素。它的特点是查找、插入、删除的时间复杂度都是 O(1),因为它内部使用哈希表来实现数据存储和查找。在使用 `unordered_set` 时,我们需要提供一个哈希函数来对元素进行哈希,同时还需要提供一个相等比较函数来检查两个元素是否相等。下面是一个简单的示例代码:
```c++
#include <iostream>
#include <unordered_set>
int main() {
std::unordered_set<int> s = {3, 5, 7, 2, 1};
s.insert(6);
s.insert(3); // 重复插入,不会有影响
for (auto x : s) {
std::cout << x << " ";
}
std::cout << std::endl;
if (s.find(5) != s.end()) {
std::cout << "5 is in the set" << std::endl;
}
s.erase(2);
for (auto x : s) {
std::cout << x << " ";
}
std::cout << std::endl;
return 0;
}
```
输出结果为:
```
7 6 5 3 2 1
5 is in the set
7 6 5 3 1
```
可以看到,在 `unordered_set` 中,元素的顺序是无序的,每个元素只会出现一次,插入时如果元素已经存在,不会对集合产生影响,删除时可以直接使用元素的值进行删除。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![patch](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)