1.容器类型2.构造3.谓词4.类型别名5.插入返回值6.删除7.查找元素8. 查找算法9.无序容器
1.容器类型//全部均为set,map // 想要重复元素就在前面加 multi // 想要哈希表模式的就在前面加 unordered_ 组合一共8中类型2.构造
//1.map可以直接用花括号指定元素 map3.谓词authors = { {" ",""}; {" ",""}; ... } //2.set可以用顺序容器来初始化,如vector vector vct{...}; set (vct.begin(),vct.end());
//谓词函数 bool mycompare(const4.类型别名a, const b) { return a.__ < b.__; } //实例对象 struct MyCompare1 { bool operator()(int val, int val1) { return val > val1; } }; set ...; set ...; std::stable_sort(sv.begin(), sv.end(), mycompare); std::stable_sort(sv.begin(), sv.end(), MyCompare1());
::key_type //关键字类型
::mapped_type //值类型,只适用与map
::value_type //对于set,与key_type是一样的
//对于map,返回的是 pair
//!!解引用时就会得到一个value_type类型的值!!
5.插入返回值
6.删除对于不包含重复关键字的容器,添加单一元素的insert和 emplace 版本返回一个pair,告诉我们插入操作是否成功
返回值: pair<迭代器,bool>;
迭代器指向具有给定关键字的元素’bool说明插入是否成功; true表示成功
earse(key_value); //根据值删除,会删除全部与它相同的值,返回一个size_type值,指出删除的数量 earse(b,e); //删除两个迭代器之间的元素;7.查找元素
//对于set.如果只是想判断元素是否存在,那么find 和 count 都一样 set8. 查找算法isst = {...}; isst.find(x); isst.count(x); //0和1 //对于map就不同,find 返回的是 一个迭代器,解引用是value_type.count返回数量 //find找不到均返回 .end() map hash = {{},{}}; hash.find(key_value); //map中 find 和 []/at 区别 - 如果用[]/at查找元素. 找不到会将该元素插入map中!
lower_bound(b,e,key_value); //查找第一个大于等于value的数! upper_bound(b,e,key_value); //查找第一个大于value的数!9.无序容器
//构造可以直接用有序容器 maphash; unordered_map hash2(hash.begin(), hash.end()); //无序容器管理操作 //桶接口 • c.bucket_count() //桶数目 • c.max_bucket_count() //容器能容纳最大桶数目 • c.bucket_size(n) //第n个同有多少个元素 • c.bucket(k) //桶迭代 • local_iterator //可以用来访问桶元素的迭代器 • const_local_iterator //桶元素迭代器的const类型 • c.begin(n), c.end(n) //桶n的开始,结尾迭代器 • c.cbegin(n), c.cend(n) //桶n的开始,结尾常量迭代器 //哈希策略 • c.load_factor() //每个桶的平均元素,类型float • c.max_load_factor() // c试图维护的平均桶大小,返回float值,c会在需要时添加新的桶,以使得load_factor<=max_load_factor • c.rehash(n) //重组存储,使得bucket_count >= n,且bucket_count>size/max_load_factor • c.reserve(n) //重组存储,使得c可以保存n个元素且不必rehash



