1.初始化
unordered_set set1; //创建空set
unordered_set set2(set1); //拷贝构造
unordered_set set3(set1.begin(), set1.end()); //迭代器构造
unordered_set set4(arr,arr 5); //数组构造
unordered_set set5(move(set2)); //移动构造
unordered_set set6 {1,2,10,10};//使用initializer_list初始化
2.常用操作
set1.find(2); //查找2,找到返回迭代器,失败返回end()
set1.count(2); //返回指2出现的次数,0或1
set1.emplace(3); //使用转换移动构造函数,返回pair::iterator, bool>
set1.insert(3); //插入元素,返回pair::iterator, bool>
set1.insert({1,2,3}); //使用initializer_list插入元素
set1.insert(set1.end(), 4);//指定插入位置,如果位置正确会减少插入时间,返回指向插入元素的迭代器
set1.insert(set2.begin(), set2.end());//使用范围迭代器插入
set1.erase(1); //删除操作,成功返回1,失败返回0
set1.erase(set1.find(1)); //删除操作,成功返回下一个pair的迭代器
set1.erase(set1.begin(), set1.end()); //删除set1的所有元素,返回指向end的迭代器
set1.empty(); //是否为空
set1.size(); //大小
set1.bucket_count(); //返回容器中的桶数
set1.bucket_size(1); //返回1号桶中的元素数
set1.bucket(1); //1在哪一个桶
set1.load_factor(); //负载因子,返回每个桶元素的平均数,即size/float(bucket_count);
set1.max_load_factor();//返回最大负载因子
set1.max_load_factor(2);//设置最大负载因子为2,rehash(0)表示强制rehash
set1.rehash(20);//设置桶的数量为20,并且重新rehash
set1.reserve(20);//将容器中的桶数设置为最适合元素个数,如果20大于当前的bucket_count乘max_load_factor,则增加容器的bucket_count并强制重新哈希。如果20小于该值,则该功能可能无效。
unordered_set::iterator it = set1.begin(); //返回指向set1首元素的迭代器
unordered_set::const_iterator c_it = set1.cbegin(); //返回指向set1首元素的常量迭代器
unordered_set::local_iterator it = set1.begin(1);//返回1号桶中的首元素迭代器
unordered_set::const_local_iterator c_it = set1.cbegin(1);//返回1号桶中的首元素的常量迭代器
pair::iterator, unordered_set::iterator> it = set1.equal_range(1);//返回一个pair,pair里面第一个变量是lower_bound返回的迭代器,第二个迭代器是upper_bound返回的迭代器
set1.clear(); //清空
3.不常用操作
set1.emplace_hint(set1.end(),12);//提示插入的位置,如果指定的位置是真正要插入的位置,会减少插入时间
set1.swap(set2); //交换,要求两个set的类型相同
set1.get_allocator(); //返回分配器
set1.max_size(); //返回可以容纳的最大元素个数
set1.max_bucket_count(); //返回可以容纳的最大桶数
unordered_set::hasher hash = set1.hash_function();//返回hash函数
unordered_set::key_equal eql = set1.key_eq();///返回比较元素是否相等的函数,接收两个int参数
set1.merge(set2); //合并两个unordered_set,c 17支持
4.遍历
for(unordered_set::iterator it = set1.begin(); it != set1.end(); it) cout << *it << " ";
for(int x : set1) cout << x << " ";