undered_set
C++11 为 STL 标准库添加的无序(哈希)容器之一。
undered_set 和 set 之间大致有以下这些区别:
- undered_set 内部是一个哈希表,而 set 是红黑树
- undered_set 内部是无序的,不会对其进行排序
- undered_set 的插入和删除的复杂度是常数级,但是冲突较多的时候可能复杂度会比较差
成员函数:
.begin() //返回指向第一个元素的迭代器
.end() //返回指向最后一个元素下一个元素的迭代器
.empty() //容器是否为空,若为空的话返回 true,否则返回 false
.size() //返回容器中的元素个数
.find(x) //返回值为x的元素的迭代器,如果不存在的话返回指向最后一个元素的下一个位置的迭代器
.count(x) //返回容器中值为x的元素的个数
.insert(x) //插入一个元素
.emplace(x) // 插入一个元素,效率比insert高
.erase() //删除指定元素
.clear() //删除容器中的所有元素
写代码举个例子:
#include <bits/stdc++.h>
#include <unordered_set>
using namespace std;
unordered_set<int> s;
int main()
{
s.insert(10);
s.emplace(10);
cout << s.size() << '\n';
cout << s.count(10) << '\n'; // 因为里面的元素是不重复的,所以是 1
s.erase(s.begin());
cout << s.size() << '\n';
cout << s.count(10) << '\n';
s.insert(1);
s.emplace(2);
cout << s.size() << '\n';
cout << s.count(2) << '\n';
s.clear();
cout << s.empty();
return 0;
}
最后结果:
1
1
0
0
2
1
1