C++ 中的 Pairs : pair 容器是在
句法:
pair (data_type1, data_type2) Pair_name;
C++ 中的Multiset : Multiset 是一种关联容器,它按照特定顺序存储元素,并且多个元素可以具有相同的值。
句法:
multiset
Multimap : Multi-map 是一种关联容器,它类似于地图,不同之处在于多个元素可以具有相同的键。
句法:
multimap
C++ STL 中的pair in multi-set 和multi-map 有什么区别?
这两个数据结构 multiset 和 multimap 的默认行为是按升序存储元素。当默认情况下创建一对多集的话,它会根据所有对的第一个元素递增次序的所有对进行排序,如果任何两个或两个以上的对的第一个元素是相等的,那么它会排序对根据对的第二个元素。
当创建一对 multimap 时,默认情况下,它将根据所有对的第一个元素按递增顺序对所有对进行排序,如果任何两个或两个以上对的第一个元素相等,则它将打印根据插入到多映射对的顺序配对。
以下是说明差异的程序:
程序 1:多组配对
CPP
// C++ program print the data of
// multiset by inserting using pair
#include
using namespace std;
// Function to print the data stored
// in pair of multiset
void printData(multiset > gfg)
{
// Declare iterator
multiset >::iterator i;
// Iterate through pair of multiset
for (i = gfg.begin(); i != gfg.end(); ++i) {
// Print the pairs
cout << i->first << " "
<< i->second << endl;
}
}
// Driver Code
int main()
{
// Declare pair of multiset
multiset > gfg;
// Insert Data
gfg.insert(make_pair(1, "yukti"));
gfg.insert(make_pair(2, "umang"));
gfg.insert(make_pair(3, "vinay"));
gfg.insert(make_pair(3, "vijay"));
gfg.insert(make_pair(4, "kanak"));
// Function call to print the data
printData(gfg);
return 0;
}
CPP
// C++ program print the data of
// multimap by inserting using pair
#include
using namespace std;
// Function to print the data stored
// in pair of multimap
void printData(multimap gfg)
{
// Declare iterator
multimap::iterator i;
// Iterate through pair of multiset
for (i = gfg.begin(); i != gfg.end(); ++i) {
// Print the pairs
cout << i->first << " "
<< i->second << endl;
}
}
// Driver Code
int main()
{
// Declare pair of multimap
multimap gfg;
// Insert data
gfg.insert(make_pair(1, "yukti"));
gfg.insert(make_pair(2, "umang"));
gfg.insert(make_pair(3, "vinay"));
gfg.insert(make_pair(3, "vijay"));
gfg.insert(make_pair(4, "kanak"));
// Function call to print the data
printData(gfg);
return 0;
}
解释:
在上面的程序中,我们创建了整数和字符串对,其中名称与每个整数成对并插入到multi-set 中。根据 multi-set 的默认行为,数据根据第一个元素按升序排列,但当第一个元素相同时,它将根据第二个值排列这些元素。对于 (3, “vijay”) 和 (3, “vinay”) 对中的第一个元素,即“vijay”和“vinay”的3 相同,因此它将根据第二个元素“vijay”排列对”然后是“vinay” (按字母顺序)。
方案二:多图配对
CPP
// C++ program print the data of
// multimap by inserting using pair
#include
using namespace std;
// Function to print the data stored
// in pair of multimap
void printData(multimap gfg)
{
// Declare iterator
multimap::iterator i;
// Iterate through pair of multiset
for (i = gfg.begin(); i != gfg.end(); ++i) {
// Print the pairs
cout << i->first << " "
<< i->second << endl;
}
}
// Driver Code
int main()
{
// Declare pair of multimap
multimap gfg;
// Insert data
gfg.insert(make_pair(1, "yukti"));
gfg.insert(make_pair(2, "umang"));
gfg.insert(make_pair(3, "vinay"));
gfg.insert(make_pair(3, "vijay"));
gfg.insert(make_pair(4, "kanak"));
// Function call to print the data
printData(gfg);
return 0;
}
1 yukti
2 umang
3 vinay
3 vijay
4 kanak
以上代码说明:
在上面的程序中,我们再次插入了相同的对,但这次是在multi-map 中。据的默认行为多映射数据根据密钥以升序排列,但是当键是不像多组将看到哪些元件首先插入,然后它会安排根据该序列的优先级相同。因此,在显示的输出中,我们可以看到,因为“vinay”和“vijay”的键3是相同的,所以它将遵循在多映射中插入对的顺序,这就是为什么“vinay”来了首先在输出中的“vijay”之前。
表格区分:
Pair in Multiset | Multimap |
---|---|
In pair of multiset pair is used to mapped key with specific value. | Default behaviour is to insert element as a key-value pair. |
When a pair of a multiset is created then by default, it will sort all the pairs in increasing order according to the first element of all the pairs and if the first element of any two or more than two pairs are equal then it will sort the pair according to the second element of the pair. | When a pair of a multimap is created then by default, it will sort all the pairs in increasing order according to the first element of all the pairs and if the first element of any two or more than two pair are equal then it will print the pair according to the order of insertion to the pair of multimap. |
Syntax:
multiset |
Syntax:
multiset |