📜  C++ STL中Multiset和Multimap中的pair之间的区别

📅  最后修改于: 2021-09-10 03:00:52             🧑  作者: Mango

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

句法:

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

句法:

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

句法:

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: Syntax:
想要从精选的视频和练习题中学习,请查看C++ 基础课程,从基础到高级 C++ 和C++ STL 课程,了解基础加 STL。要完成从学习语言到 DS Algo 等的准备工作,请参阅完整的面试准备课程