C++ STL multimap容器

一、特性: multimap 容器保存的是有序的键/值对,但它可以保存重复的元素。multimap 中会出现具有相同键的元素序列,它们会被添加到容器中。除了这个特性,multimap大部分成员函数的使用方式和map相同。

二、使用情况:如果使用 multimap 容器,几乎可以肯定它会包含键重复的元素;否则,就应该使用 map。

三、重要函数:

equal_range():访问给定键的所有元素

 它会返回一个封装了两个迭代器的 pair 对象,这两个迭代器所确定范围内的元素的键和参数值相等。例如:

  1. auto pr = people.equal_range("Ann");
  2. if(pr.first != std::end(people))
  3. {
  4. for (auto iter = pr.first ; iter != pr.second; ++iter)
  5. std:cout << iter->first << " is " << iter->second << std::endl;
  6. }

equal_range() 的参数可以是和键同类型的对象,或是不同类型的但可以和键比较的对象。返回的 pair 对象的成员变量 first 是一个迭代器,它指向第一个大于等于参数的元素;如果键和参数相等的元素存在的话,它是第一个键和参数相同的元素。如果键不存在,pair 的成员变量 first 就是容器的结束迭代器,所以应该总是对它们进行捡查。  

 pair 的成员变量 second 也是一个迭代器,它指向键值大于参数的第一个参数;如果没有这样的元素,它会是一个结束迭代器。这段代码会输出容器中键值为”Ann”的元素的一些信息。  

posted @ 2022-09-12 19:41  yhstsy  阅读(78)  评论(0)    收藏  举报