C++标准模板库中的Multimap(STL)

多重映射类似于 地图 此外,多个元素可以具有相同的键。此外,在这种情况下,不要求键值和映射值对必须是唯一的。关于multimap,需要注意的一点是,multimap始终保持所有键的排序顺序。多重映射的这些特性使得它在竞争性编程中非常有用。

null

与multimap相关的一些基本功能:

实现上述功能的C++实现:

CPP

// CPP Program to demonstrate the implementation of multimap
#include <iostream>
#include <iterator>
#include <map>
using namespace std;
// Driver Code
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 << "The multimap gquiz1 is : " ;
cout << " KEY ELEMENT" ;
for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {
cout << ' ' << itr->first << ' ' << itr->second
<< '' ;
}
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 again
cout << "The multimap gquiz1 after adding extra "
"elements is : " ;
cout << " KEY ELEMENT" ;
for (itr = gquiz1.begin(); itr != gquiz1.end(); ++itr) {
cout << ' ' << itr->first << ' ' << itr->second
<< '' ;
}
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 << "The multimap gquiz2 after assign from "
"gquiz1 is : " ;
cout << " KEY ELEMENT" ;
for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) {
cout << ' ' << itr->first << ' ' << itr->second
<< '' ;
}
cout << endl;
// remove all elements up to
// key with value 3 in gquiz2
cout << "gquiz2 after removal of elements less than "
"key=3 : " ;
cout << " KEY ELEMENT" ;
gquiz2.erase(gquiz2.begin(), gquiz2.find(3));
for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) {
cout << ' ' << itr->first << ' ' << itr->second
<< '' ;
}
// remove all elements with key = 4
int num;
num = gquiz2.erase(4);
cout << "gquiz2.erase(4) : " ;
cout << num << " removed " ;
cout << " KEY ELEMENT" ;
for (itr = gquiz2.begin(); itr != gquiz2.end(); ++itr) {
cout << ' ' << itr->first << ' ' << itr->second
<< '' ;
}
cout << endl;
// lower bound and upper bound for multimap gquiz1 key =
// 5
cout << "gquiz1.lower_bound(5) : "
<< " KEY = " ;
cout << gquiz1.lower_bound(5)->first << ' ' ;
cout << " ELEMENT = " << gquiz1.lower_bound(5)->second
<< endl;
cout << "gquiz1.upper_bound(5) : "
<< " KEY = " ;
cout << gquiz1.upper_bound(5)->first << ' ' ;
cout << " ELEMENT = " << gquiz1.upper_bound(5)->second
<< endl;
return 0;
}


输出

The multimap gquiz1 is :     KEY    ELEMENT    1    40    2    30    3    60    6    50    6    10The multimap gquiz1 after adding extra elements is :     KEY    ELEMENT    1    40    2    30    3    60    4    50    5    10    6    50    6    10The multimap gquiz2 after assign from gquiz1 is :     KEY    ELEMENT    1    40    2    30    3    60    4    50    5    10    6    50    6    10gquiz2 after removal of elements less than key=3 :     KEY    ELEMENT    3    60    4    50    5    10    6    50    6    10gquiz2.erase(4) : 1 removed     KEY    ELEMENT    3    60    5    10    6    50    6    10gquiz1.lower_bound(5) :     KEY = 5        ELEMENT = 10gquiz1.upper_bound(5) :     KEY = 6        ELEMENT = 50

多重映射函数列表

作用

释义

多重映射::运算符= 它用于通过替换现有内容将新内容分配给容器。
多重映射::crbegin()和多重映射::crend() crbegin()返回一个常量反向迭代器,该迭代器引用多重映射容器中的最后一个元素。crend()返回一个常量反向迭代器,该迭代器指向多重映射中第一个元素之前的理论元素。
multimap::emplace_hint() 在multimap容器中插入键及其元素,并给出提示。
多重映射清除() 从多重贴图中删除所有元素。
多重映射空() 返回多重映射是否为空。
multimap maxsize() 返回多重映射容器可以容纳的最大元素数。
多重映射值_comp() 返回确定多重映射中元素排序方式的对象(默认情况下为“
多贴图渲染 返回一个反向迭代器,该迭代器指向多重映射容器的第一个元素之前的理论元素。
multimap::cbegin()和multimap::cend() cbegin()返回一个常量迭代器,该迭代器引用多重映射容器中的第一个元素。cend()返回一个常量迭代器,该迭代器指向多重映射中最后一个元素后面的理论元素。
多重映射::交换() 将一个多重映射的内容与另一个类型和大小相同的多重映射交换。
多重映射rbegin 返回指向容器最后一个元素的迭代器。
多重映射大小() 返回多重映射容器中的元素数。
multimap::emplace() 在多重映射容器中插入键及其元素。
multimap::begin()和multimap::end() begin()返回一个迭代器,该迭代器引用多重映射容器中的第一个元素。end()返回多重映射中最后一个元素后面的理论元素的迭代器。
多重映射上界() 向第一个元素返回迭代器,该元素相当于键值为“g”的多重映射值,或者肯定会在多重映射中紧跟键值为“g”的元素。
多重映射::计数() 返回多重映射中键值为“g”的元素的匹配数。
多重映射::擦除() 从多重贴图中删除键值。
multimap::find() 如果在多重映射中找到键值为“g”的元素,则返回迭代器,否则返回迭代器结束。
多重映射等_范围() 返回成对的迭代器。该对指的是一个范围的边界,该范围包括容器中的所有元素,这些元素的密钥等价于k。
多重映射插入() 用于在多重贴图容器中插入元素。
多重映射下界() 将迭代器返回到第一个元素,该元素相当于键值为“g”的多重映射值,或者肯定不会在多重映射中键值为“g”的元素之前。
多重映射键_comp() 返回确定多重映射中元素排序方式的对象(默认情况下为“

最近关于多重地图的文章

如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享