C++标准模板库(STL)如何使用multimap(用法示例)

Multimap类似于添加了多个元素具有相同键的map。此外,在本例中不要求键值和映射值对必须是唯一的。关于multimap需要注意的一件重要事情是,multimap始终保持所有键的排序顺序。multimap的这些特性使得它在竞争编程中非常有用。
一些与multimap相关的基本功能:

  • begin()–将迭代器返回到多图的第一个元素
  • end()–将迭代器返回到多元素映射中最后一个元素之后的理论元素
  • size()–返回多图中的元素数
  • max_size()–返回多图可以容纳的最大元素数
  • empty()–返回多图是否为空
  • 对< int, int> insert(keyvalue, multimapvalue)–向多图添加新元素
【C++标准模板库(STL)如何使用multimap(用法示例)】C++实现以说明上述功能 
CPP
#include < iostream> #include < map> #include < iterator> using namespace std; int main() { multimap < int , int > gquiz1; // empty multimap container // insert elements in random order gquiz1.insert(pair < int , int > (1, 40)); gquiz1.insert(pair < int , int > (2, 30)); gquiz1.insert(pair < int , int > (3, 60)); gquiz1.insert(pair < int , int > (6, 50)); gquiz1.insert(pair < int , int > (6, 10)); // printing multimap gquiz1 multimap < int , int > ::iterator itr; cout < < "\nThe multimap gquiz1 is : \n" ; cout < < "\tKEY\tELEMENT\n" ; for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) { cout< < '\t' < < itr-> first < < '\t' < < itr-> second < < '\n' ; } cout < < endl; //adding elements randomly, // to check the sorted keys property gquiz1.insert(pair < int , int > (4, 50)); gquiz1.insert(pair < int , int > (5, 10)); // printing multimap gquiz1 againcout < < "\nThe multimap gquiz1 after adding extra elements is : \n"; cout < < "\tKEY\tELEMENT\n" ; for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) { cout< < '\t' < < itr-> first < < '\t' < < itr-> second < < '\n' ; } cout < < endl; // assigning the elements from gquiz1 to gquiz2 multimap < int , int > gquiz2(gquiz1.begin(), gquiz1.end()); // print all elements of the multimap gquiz2 cout < < "\nThe multimap gquiz2 after assign from gquiz1 is : \n"; cout < < "\tKEY\tELEMENT\n" ; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout < < '\t' < < itr-> first < < '\t' < < itr-> second < < '\n' ; } cout < < endl; // remove all elements up to // element with value 30 in gquiz2 cout < < "\ngquiz2 after removal of elements less than key=3 : \n"; cout < < "\tKEY\tELEMENT\n" ; gquiz2.erase(gquiz2.begin(), gquiz2.find(3)); for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout < < '\t' < < itr-> first < < '\t' < < itr-> second < < '\n' ; } // remove all elements with key = 4 int num; num = gquiz2.erase(4); cout < < "\ngquiz2.erase(4) : " ; cout < < num < < " removed \n" ; cout < < "\tKEY\tELEMENT\n" ; for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) { cout < < '\t' < < itr-> first < < '\t' < < itr-> second < < '\n' ; } cout < < endl; //lower bound and upper bound for multimap gquiz1 key = 5 cout < < "gquiz1.lower_bound(5) : " < < "\tKEY = " ; cout < < gquiz1.lower_bound(5)-> first < < '\t' ; cout < < "\tELEMENT = " < < gquiz1.lower_bound(5)-> second < < endl; cout < < "gquiz1.upper_bound(5) : " < < "\tKEY = " ; cout < < gquiz1.upper_bound(5)-> first < < '\t' ; cout < < "\tELEMENT = " < < gquiz1.upper_bound(5)-> second < < endl; return 0; }

输出如下:
The multimap gquiz1 is : KEYELEMENT 140 230 360 420 550 650 610The multimap gquiz2 after assign from gquiz1 is : KEYELEMENT 140 230 360 420 550 650 610gquiz2 after removal of elements less than key=3 : KEYELEMENT 360 420 550 650 610gquiz2.erase(4) : 1 removed KEYELEMENT 360 550 650 610gquiz1.lower_bound(5) :KEY = 5ELEMENT = 50 gquiz1.upper_bound(5) :KEY = 6ELEMENT = 50

多图功能列表:   
  • C++ STL中的multimap::operator =–通过替换现有内容将新内容分配给容器。
  • C++ STL中的multimap::crbegin()和multimap::crend()–crbegin()返回一个常量反向迭代器, 该迭代器引用multimap容器中的最后一个元素。crend()返回一个常数反向迭代器, 该迭代器指向多图中第一个元素之前的理论元素。
  • C++ STL中的multimap::emplace_hint()–将键及其元素插入具有给定提示的multimap容器中。
  • C++ STL中的multimap clear()函数–从多图上删除所有元素。
  • C++ STL中的multimap empty()函数–返回多图是否为空。
  • C++ STL中的multimap maxsize()–返回多图容器可以容纳的最大元素数。
  • C++ STL中的multimap value_comp()函数–返回确定多重地图中元素排序方式的对象(默认情况下为" < ")
  • C++ STL中的多图撕裂–返回指向多图容器第一个元素之前的理论元素的反向迭代器。
  • C++ STL中的multimap::cbegin()和multimap::cend()–cbegin()返回一个常量迭代器, 该迭代器引用multimap容器中的第一个元素。cend()返回一个常量迭代器, 该迭代器指向在多图中最后一个元素之后的理论元素。
  • C++ STL中的multimap::swap()–将一个多图的内容交换为相同类型和大小的另一个多图。
  • C++ STL中的多图rbegin–返回指向容器最后一个元素的迭代器。
  • C++ STL中的multimap size()函数–返回多图容器中的元素数。
  • C++ STL中的multimap::emplace()–将键及其元素插入多图容器。
  • C++ STL中的multimap::begin()和multimap::end()–开始()返回一个引用了multimap容器中第一个元素的迭代器。结束()返回迭代器, 该迭代器返回到multimap中最后一个元素之后的理论元素。
  • C++ STL中的multimap upper_bound()函数–将迭代器返回到等效于键值为" g"的多重映射值的第一个元素, 或者肯定会在多图中的键值为" g"的元素之后。
  • C++ STL中的multimap::count()–返回多图中键值为" g"的元素的匹配数。
  • C++ STL中的multimap::erase()–从多重地图中删除键值。
  • C++ STL中的multimap::find()–如果找到, 则将迭代器返回键值为" g"的元素, 并返回到结束。
  • C++ STL中的multimap equal_range()–返回成对的迭代器。该对是指范围的边界, 该范围包括容器中所有具有等于k的键的元素。
  • C++ STL中的multimap insert()–用于在多图容器中插入元素。
  • C++ STL中的multimap lower_bound()函数–将迭代器返回到等效于键值为" g"的多重映射值的第一个元素, 或者绝对不会在多重映射中的键值为" g"的元素之前。
  • C++ STL中的multimap key_comp()–返回确定多重映射中元素排序方式的对象(默认为" < ")。
最近关于Multimap的文章
如果发现任何不正确的地方, 或者想分享有关上述主题的更多信息, 请发表评论。
被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C++ STL通过激烈的问题解决过程来训练和掌握这些概念。

    推荐阅读