📜  C++ STL中Multiset中的对与Multimap之间的区别

📅  最后修改于: 2021-05-30 12:01:46             🧑  作者: Mango

C++中的结对:结对容器是在头中定义的简单容器,它由两个数据元素或对象组成。第一个元素称为“第一”,第二个元素称为“第二”,顺序是固定的(第一,第二)。对用于将类型不同的两个值组合在一起。配对提供了一种将两个异构对象存储为单个单元的方法。

句法:

C++中的Multiset Multiset是一种关联容器,用于按照特定顺序存储元素,并且其中多个元素可以具有相同的值。

句法:

Multimap Multi-map是一种关联容器,与地图相似,不同之处在于多个元素可以具有相同的键。

句法:

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: Syntax:
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”