C++中的结对:结对容器是在
句法:
pair (data_type1, data_type2) Pair_name;
C++中的Multiset : Multiset是一种关联容器,用于按照特定顺序存储元素,并且其中多个元素可以具有相同的值。
句法:
multiset
Multimap : Multi-map是一种关联容器,与地图相似,不同之处在于多个元素可以具有相同的键。
句法:
multimap
C++ STL中的多集对和多映射对有什么区别?
这些数据结构multiset和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中。根据多集的默认行为,数据将根据第一个元素以升序排列,但是当第一个元素相同时,它将根据第二个值排列这些元素。对于对(3,“ vijay”)和(3,“ vinay”),对中的第一个元素,即3对“ vijay”和“ vinay”都是相同的,因此它将根据第二个元素“ vijay”排列对”,然后是“ vinay” (按字母顺序)。
程序2:在多地图中配对
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 |