C++ 关联容器

 关联容器类型

  map  关联数组,保存关键字-值对

  set    关键字即值

  multtmap  关键字可重复map

  multiset  关键字可重复set

  无序容器

  unordered_map  哈希函数组织的map

  unordered_set  哈希函数组织的set

  unordered_multmap  可重复出现哈希map

  unordered_multiset  可重复出现哈希set

 map

  定义时指定关键字和值的类型,关键字在第一位,值第二位,关键字可以作为下标操作。

  当从map提取一个元素时,会获得一个pair类型的对象,pair的first成员保存的是关键字,second对象保存的是值。

  插入操作

  向map中添加元素进行insert操作,操作时元素类型时pair,创建pair时最简单的方法时参数列表使用花括号初始化。

  创建pair的函数:

  make_pair(v1,v2);  //pair类型从v1,v2的推断

  插入时insert会返回一个pair,pair的first成员是插入元素的迭代器,second成员是bool值,关键字存在时为false,关键字不存在(插入成功)时返回true。

  删除操作

  删除元素时,返回值为删除的数量,如果对multimap进行删除,则返回值可能大于1。

  删除时也可以用一个或一对迭代器来删除。

  erase(k)  //删除关键字为k的元素,返回删除元素的数量

  erase(p)  //删除迭代器p指定的元素,返回p的下一个元素

  erase(b,e)  //删除迭代器对b和e所表示的范围中的元素,返回e

  下标操作

  对map进行下标操作时,直接使用方括号[]时,如果不存在该关键字,则会创建该关键字并初始化。

  所以应使用at对map进行访问:

  c.at(k)  //访问关键字为k的元素

  访问元素

  find(k)  //查找第一个关键字为k的元素,若不存在返回尾后迭代器

  count(k)  //计算关键字k的数量

  lower_bound(k)  //返回第一个不小于k的元素

  upper_bound(k)  //返回第一个大于k的元素

  equal_range(k)  //返回迭代器pair,first指向第一个与元素匹配的位置,second保存最后一个与元素匹配的位置,若未找到匹配元素,则两个迭代器都指向关键字可以插入的位置

 set

  set只有关键字,没有值。

  set的迭代器为const类型,即关键字不能改变。

 无序容器

  无序容器在存储上组织一组桶,使用哈希函数将元素映射到桶。

  

  不能直接使用自定义类型的无序容器。

 

posted @ 2019-03-04 16:18  我是好人007  阅读(132)  评论(0编辑  收藏  举报