个性化阅读
专注于IT技术分析

C++ STL Multiset与Multimap中的pair有什么区别?

本文概述

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

语法如下:

pair(data_type1, data_type2)Pair_name;

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

语法如下:

multiset<data_type>multiset_name;

Multimap:Multimap是一种关联容器, 类似于map除了多个元素可以具有相同的键之外。

语法如下:

Multimap<data_type1, data_type2>Multimap_name

multiset和Multimap中的pair有什么区别C++ STL?

这两个数据结构multiset和multimap的默认行为是按升序存储元素。当一个对multiset是默认创建的, 它将对所有对in递增顺序根据第一要素在所有对中, 如果任何两个或两个以上对中的第一个元素是等于然后将根据对的第二个元素.

当一个对Multimap是默认创建的, 它将对i中的所有对进行排序递增顺序根据第一要素在所有对中, 如果任何两个或两个以上对中的第一个元素相等, 则它将根据插入顺序到一对Multimap。

以下是说明差异的程序:

程序1:

多组pair

CPP

//C++ program print the data of
//multiset by inserting using pair
#include <bits/stdc++.h>
using namespace std;
  
//Function to print the data stored
//in pair of multiset
void printData(multiset<pair<int , string>> gfg)
{
  
     //Declare iterator
     multiset<pair<int , string>>::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<pair<int , string>> 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”(按字母顺序排列)来排列。

multi-map中的Pair

CPP

//C++ program print the data of
//multimap by inserting using pair
#include <bits/stdc++.h>
using namespace std;
  
//Function to print the data stored
//in pair of multimap
void printData(multimap<int , string> gfg)
{
  
     //Declare iterator
     multimap<int , string>::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<int , string> 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中。根据multi-map的默认行为,数据按照key升序排列,但当key与multi-set不一样时,它会看到哪个元素首先被插入的优先级,然后它会根据该顺序进行排列。因此,正如在输出中所示,我们可以看到,由于键3对于“vinay”和“vijay”是相同的,所以它将遵循在多映射中插入对的顺序,这就是为什么“vinay”在输出中出现在“vijay”之前。

表格差异:

Pair in Multiset Multimap
在一对multiset对中, 用于映射具有特定值的密钥。 默认行为是将元素作为键值对插入。
当创建一对多对时, 默认情况下, 它将根据所有对中的第一个元素以升序对所有对进行排序, 如果任意两个或两个以上对中的第一个元素相等, 则它将对根据pair的第二个元素pair。 当创建一对Multimap时, 默认情况下, 它将根据所有对中的第一个元素以升序对所有对进行排序, 如果任意两个或两个以上对中的第一个元素相等, 则它将打印对根据插入顺序对成对的Multimap。
语法如下:

multiset <pair <int, string>> M;

语法如下:

multiset <int, string> M;

被认为是行业中最受欢迎的技能之一, 我们拥有自己的编码基础C++ STL通过激烈的问题解决过程来训练和掌握这些概念。


赞(0) 打赏
未经允许不得转载:srcmini » C++ STL Multiset与Multimap中的pair有什么区别?
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

微信扫一扫打赏