一、unordered_set
unordered_set<int> u_set;
//判断是否为空
u_set.empty();
//获取元素个数 size()
u_set.size();
//获取最大存储量 max_size()
u_set.max_size();
//返回头迭代器 begin()
unordered_set<int>::iterator ite_begin = c1.begin();
//返回尾迭代器 end()
unordered_set<int>::iterator ite_end = c1.end();
set1.find(2); //查找2,找到返回迭代器,失败返回end()
set1.count(2); //返回指2出现的次数,0或1
set1.emplace(3); //使用转换移动构造函数,返回pair<unordered_set<int>::iterator, bool>
set1.insert(3); //插入元素,返回pair<unordered_set<int>::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<int>::iterator it = set1.begin(); //返回指向set1首元素的迭代器
unordered_set<int>::const_iterator c_it = set1.cbegin(); //返回指向set1首元素的常量迭代器
unordered_set<int>::local_iterator it = set1.begin(1);//返回1号桶中的首元素迭代器
unordered_set<int>::const_local_iterator c_it = set1.cbegin(1);//返回1号桶中的首元素的常量迭代器
pair<unordered_set<int>::iterator, unordered_set<int>::iterator> it = set1.equal_range(1);//返回一个pair,pair里面第一个变量是lower_bound返回的迭代器,第二个迭代器是upper_bound返回的迭代器
set1.clear(); //清空
遍历
#include<unordered_set>
#include<iostream>
using namespace std;
int main(){
unordered_set<int> set = {9,5,9,8,1,2,3,5,6,1,2,3,4,5,6,7,4,3,3};
for(unordered_set<int>::iterator it = set.begin();it!=set.end();it++)
cout<<*it<<" ";
return 0;
}
unordered_map
std::unordered_map<std::string, std::int> umap; //定义
umap.insert(Map::value_type("test", 1));//增加
//根据key删除,如果没找到n=0
auto n = umap.erase("test") //删除
auto it = umap.find(key) //改
if(it != umap.end())
it->second = new_value;
//map中查找x是否存在
umap.find(x) != map.end()//查
//或者
umap.count(x) != 0
for(auto x:unomap)//遍历整个map,输出key及其对应的value值
{
x.second = 0;
cout<<x.second<<endl;//全是 000;;
}
cout<<x.second<<endl;//回复原来的数值的。
//彻底改变:使用find彻底找到这个数值,然后在进行改,可以保证作用域是整个程序。
for(auto x:unomap)//遍历整个map,输出key及其对应的value值
{
auto it = umap.find(key) //改
if(it != umap.end())
it->second = new_value;
}
unordered_map<key,T>::iterator it;
(*it).first; //the key value
(*it).second //the mapped value
for(unordered_map<key,T>::iterator iter=mp.begin();iter!=mp.end();iter++)
cout<<"key value is"<<iter->first<<" the mapped value is "<< iter->second;
//也可以这样
for(auto& v : mp)
print v.first and v.second