c++ unordered+set
时间: 2023-12-10 22:24:19 浏览: 27
unordered_set是C++标准库中的一个容器,用于存储唯一元素。它使用哈希函数对元素进行哈希计算,以实现快速的元素插入、删除和查找操作。引用中展示了一个返回临时unordered_set容器的函数,并通过移动构造函数创建了一个名为uset的unordered_set容器。引用展示了通过传入迭代器来创建另一个名为uset2的unordered_set容器的方法。引用是一个完整的示例代码,展示了如何使用unordered_set容器。它首先创建一个空的unordered_set容器uset,然后使用emplace函数向uset容器中添加元素。最后,使用迭代器遍历输出uset容器中的所有元素。
相关问题
C++中的unordered+_set
unordered_set是C++标准库中的一个容器,它提供了一种无序的、不重复的元素集合。unordered_set内部使用哈希表来实现,因此插入、删除和查找操作的平均时间复杂度为常数时间O(1)。
unordered_set的特点如下:
1. 无序性:元素在unordered_set中的存储位置是根据元素的哈希值决定的,而不是按照元素的插入顺序或者大小顺序进行存储。
2. 不重复性:unordered_set中不允许存在重复的元素,每个元素只能出现一次。
3. 快速插入和删除:由于使用了哈希表,插入和删除操作的平均时间复杂度为O(1)。
4. 查找效率高:通过哈希表进行查找,平均时间复杂度为O(1)。
使用unordered_set需要包含头文件<unordered_set>,并使用std命名空间。以下是unordered_set的一些常用操作:
1. 插入元素:使用insert()函数插入元素到unordered_set中。
2. 删除元素:使用erase()函数删除指定元素或者使用clear()函数清空unordered_set中的所有元素。
3. 查找元素:使用find()函数查找指定元素,返回一个迭代器,如果找到则指向该元素,否则指向unordered_set的末尾。
4. 遍历元素:使用迭代器进行遍历,或者使用范围for循环。
c++ unordered_set
unordered_set是C++ STL中的一个容器,用于存储一组不重复的元素,其内部实现是基于哈希表的。unordered_set中的元素是无序的,但是可以通过哈希函数快速查找元素。
unordered_set的用法和其他STL容器类似,可以使用insert()函数向其中插入元素,使用erase()函数删除元素,使用find()函数查找元素等。另外,unordered_set还提供了一些其他的成员函数,如size()、empty()、clear()等。
unordered_set的定义方式如下:
```c++
#include <unordered_set>
using namespace std;
unordered_set<int> mySet; //定义一个存储int类型元素的unordered_set
```
在使用unordered_set时,需要注意以下几点:
1. unordered_set中的元素必须是可哈希的,即需要定义哈希函数和相等比较函数。
2. unordered_set中的元素是无序的,不能通过下标访问元素。
3. unordered_set中的元素不允许重复,如果插入重复元素会被忽略。
下面是一个使用unordered_set的例子:
```c++
#include <iostream>
#include <unordered_set>
using namespace std;
int main()
{
unordered_set<int> mySet;
mySet.insert(1);
mySet.insert(2);
mySet.insert(3);
mySet.insert(2); //插入重复元素,会被忽略
cout << "mySet size: " << mySet.size() << endl; //输出元素个数
if (mySet.find(2) != mySet.end()) //查找元素2
cout << "2 is in mySet" << endl;
else
cout << "2 is not in mySet" << endl;
mySet.erase(3); //删除元素3
for (auto it = mySet.begin(); it != mySet.end(); ++it) //遍历元素
cout << *it << " ";
cout << endl;
mySet.clear(); //清空元素
cout << "mySet size: " << mySet.size() << endl; //输出元素个数
return ;
}
```