参考资料:
0.关联容器与顺序容器的区别
关联容器中的元素是按关键字来保存和访问的。而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。
关联容器支持高效的关键字查找与访问。两个主要的关联容器类型是map与set。
1.红黑树
(1)定义:
节点非红即黑;根节点黑色;空节点为叶子,叶子为黑;红节点孩子必为黑;从根到任意叶子,经过的黑节点数相等。
(2)除了红节点,树为满树
(1) set无重复元素,插入的元素自动按增序排列。内部实现: 红黑树。
multiset允许重复元素
(2)功能:判重,二分查找。set与map的查找、删除、插入性能都是对数复杂度。
(3)常用操作:【笔记】【set】常用操作操作 - 心若笺诗 - 博客园 (cnblogs.com)
(4)重载运算符
struct myComp { bool operator < (const your_type &a,const your_type &b) { return a.data-b.data>0; } } set<int,myComp>s; set<int,myComp>::iterator it;
3.map/mutimap
(1)映射,自动建立Key - value的对应,key 和 value可以是 任意你需要的类型。
(2)
map<string, int=""> mp;
m[key] = value;
m.insert( make_pair(key, value) );
int i = m[key]; //查找
map<string, int="">::iterator it = m.find(key);
m.erase(key); m.erase(it);
(3)例题
反片语:【刷题】【stl】【字符串】反片语 - 心若笺诗 - 博客园 (cnblogs.com)
4.bitset
(1)是一种类似数组的结构,它的每一个元素只能是0或1
(2)每个元素仅用1bit空间,可以理解为定长的bool数组:压 位用
(3)常用操作 【笔记】【bitset】用法整理 - 心若笺诗 - 博客园 (cnblogs.com)
(4)例题:开灯问题