【笔记】STL的七种武器(二)关联容器

参考资料:

 

 

0.关联容器与顺序容器的区别

  关联容器中的元素是按关键字来保存和访问的。而顺序容器中的元素是按它们在容器中的位置来顺序保存和访问的。
  关联容器支持高效的关键字查找与访问。两个主要的关联容器类型是map与set。

 

1.红黑树

(1)定义:

  节点非红即黑;根节点黑色;空节点为叶子,叶子为黑;红节点孩子必为黑;从根到任意叶子,经过的黑节点数相等。

(2)除了红节点,树为满树

 

2.set / mutiset

(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)例题:开灯问题

 

posted @ 2022-02-15 04:51  心若笺诗  阅读(27)  评论(0编辑  收藏  举报