c++中unordered_set的使用方法
时间: 2023-12-10 19:31:45 浏览: 83
unordered_set是C++ STL中的一个容器,它是一个无序的集合,其中的元素是唯一的。unordered_set的使用方法如下:
1. 头文件引入
```c++
#include <unordered_set>
```
2. 定义unordered_set
```c++
std::unordered_set<int> mySet;
```
3. 插入元素
```c++
mySet.insert(1);
mySet.insert(2);
mySet.insert(3);
```
4. 遍历元素
```c++
for (auto it = mySet.begin(); it != mySet.end(); ++it) {
std::cout << *it << " ";
}
```
5. 查找元素
```c++
if (mySet.find(2) != mySet.end()) {
std::cout << "Found" << std::endl;
} else {
std::cout << "Not found" << std::endl;}
```
6. 删除元素
```c++
mySet.erase(2);
```
相关问题
c++中unordered_set用法
### 回答1:
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 ;
}
```
### 回答2:
unordered_set是STL提供的一种高效的哈希表容器,它能够快速地将数据插入到哈希表中,同时也能够快速地进行查找和删除操作。
使用unordered_set需要包含头文件<unordered_set>。和其他STL容器一样,定义一个unordered_set对象需要指定元素类型和哈希函数,例如:
unordered_set<int> my_set; //其中元素类型是int
unordered_set<string> my_set2; //其中元素类型是string
如果需要自定义哈希函数,可以使用unordered_set提供的hash模板函数,例如:
struct MyHashFunc {
size_t operator()(const my_struct& s) const {
return hash<string>()(s.key) ^ hash<int>()(s.value);
}
};
unordered_set<my_struct, MyHashFunc> my_set; //其中元素类型是my_struct,哈希函数是MyHashFunc
下面是unordered_set的常用操作:
1.插入元素
unordered_set提供了insert()函数,可以将元素插入到unordered_set中,例如:
unordered_set<int> my_set;
my_set.insert(1);
my_set.insert(2);
my_set.insert(3);
2.查找元素
unordered_set提供了find()函数,可以在unordered_set中查找元素,它返回一个迭代器,指向第一个等于查找值的元素,如果没有找到,则返回unordered_set::end()。例如:
auto it = my_set.find(2);
if (it == my_set.end()) {
cout << "2 not found in my_set" << endl;
}
3.删除元素
unordered_set提供了erase()函数,可以在unordered_set中删除元素,它可以接受元素值或迭代器作为参数。例如:
my_set.erase(2);
4.遍历元素
unordered_set可以使用迭代器来遍历所有的元素,例如:
for (auto it = my_set.begin(); it != my_set.end(); ++it) {
cout << *it << endl;
}
因为unordered_set是一个哈希表,所以元素的顺序是无序的。此外,unordered_set还提供了size()函数可以返回unordered_set中元素的个数,empty()函数可以判断unordered_set是否为空。
### 回答3:
unordered_set是C++ STL中的一种容器,它是一个哈希表,可以被用来存储唯一的元素。unordered_set内部元素的排列顺序并不是按照插入顺序,而是按照哈希值决定的。
unordered_set 的定义方式如下:
```c++
unordered_set<int> s; // 存储int类型的unordered_set
```
与其他的STL容器一样,unordered_set也提供了许多操作:插入元素、删除元素、查找元素等等。下面简要介绍unordered_set的基本用法:
1. 插入元素
插入元素可以用insert()函数实现:
```c++
unordered_set<int> s;
s.insert(1);
s.insert(2);
s.insert(3);
```
上述代码中,将元素1、2、3插入unordered_set中。
2. 删除元素
删除元素可以用erase()函数实现:
```c++
unordered_set<int> s{1, 2, 3};
s.erase(2);
```
上述代码中,从unordered_set中删除元素2。
3. 查找元素
查找元素可以用find()函数实现:
```c++
unordered_set<int> s{1, 2, 3};
if (s.find(2) != s.end()) {
cout << "found" << endl;
} else {
cout << "not found" << endl;
}
```
上述代码中,查找unordered_set中是否存在元素2,如果存在,输出“found”,否则输出“not found”。
unordered_set还有其他许多函数,比如size()函数获取unordered_set的元素数量,empty()函数判断unordered_set是否为空等等。此外,我们也可以自定义哈希函数和判断相等的函数,以便unordered_set能够正确处理自定义类型的元素。
c++中unordered_set的用法
在 C++ 中,`unordered_set` 是一种容器,用于存储唯一的元素集合,并且以无序的方式进行组织。它基于哈希表实现,因此插入、查找和删除操作的平均时间复杂度为 O(1)。以下是 `unordered_set` 的一些常见用法:
1. 创建 `unordered_set` 对象:
```cpp
#include <unordered_set>
using namespace std;
unordered_set<int> mySet; // 创建一个空的 unordered_set
```
2. 插入元素:
```cpp
mySet.insert(10); // 插入单个元素
mySet.insert({20, 30, 40}); // 插入多个元素
```
3. 删除元素:
```cpp
mySet.erase(10); // 删除指定元素
mySet.clear(); // 清空 set
```
4. 查找元素:
```cpp
unordered_set<int>::iterator it = mySet.find(20);
if (it != mySet.end()) {
cout << "元素存在" << endl;
} else {
cout << "元素不存在" << endl;
}
```
5. 遍历元素:
```cpp
for (int element : mySet) {
cout << element << " ";
}
cout << endl;
```
阅读全文