添加头文件
#include<unordered_set>
unordered_set的初始化方式:
1.无参构造函数
unordered_set<int> mySet;
2.拷贝构造函数
unordered_set<int> mySet(otherSet);
3.移动构造函数
将另一个unordered_set中的元素移动到当前的unordered_set中
unordered_set<int> mySet(std::move(otherSet));
4.初始化列表
用大括号
unordered_set<int> mySet = {1, 2, 3};
5.迭代器
其他容器也可以
vector<int> vec = {1, 2, 3};
unordered_set<int> mySet(vec.begin(), vec.end());
unordered_set的常用内置函数:
1.判断是否为空
为空返回true,否则返回fasle;
set1.empty();
2.查找
查找2,找到返回迭代器,失败返回end()
set1.find(2);
3.查找出现次数
set1.count(2);
4.插入元素
//插入元素,返回pair<unordered_set<int>::iterator, bool>
set1.insert(3);
//使用initializer_list插入元素
set1.insert({1,2,3});
//指定插入位置,如果位置正确会减少插入时间,返回指向插入元素的迭代器
set1.insert(set1.end(), 4);
//使用范围迭代器插入
set1.insert(set2.begin(), set2.end());
5.删除元素
//删除操作,成功返回1,失败返回0
set1.erase(1);
//删除操作,成功返回下一个pair的迭代器
set1.erase(set1.find(1));
//删除set1的所有元素,返回指向end的迭代器
set1.erase(set1.begin(), set1.end());
#include<iostream>
#include<vector>
#include <unordered_set>
using namespace std;
class Soluation {
public:
vector<int> intersection(vector<int>& nums1, vector<int>& nums2) {
// 存放结果,使用set可以免去去重的步骤
unordered_set<int> result_set;
unordered_set<int> nums_set(nums1.begin(), nums1.end());// 使用迭代器进行初始化
for (int num : nums2) {
if (nums_set.find(num) != nums_set.end()) {
result_set.insert(num);
}
}
return vector<int>(result_set.begin(), result_set.end());
}
};