本文概述
- CPP
- CPP
语法如下:
pair(data_type1, data_type2)Pair_name;C++中的Multiset:Multiset是一种关联容器, 用于按照特定顺序存储元素, 并且多个元素可以具有相同的值。
语法如下:
multiset< data_type> multiset_name;Multimap:Multimap是一种关联容器, 类似于map除了多个元素可以具有相同的键之外。
语法如下:
Multimap< data_type1, data_type2> Multimap_namemultiset和Multimap中的pair有什么区别C++ STL?
这两个数据结构multiset和multimap的默认行为是按升序存储元素。当一个对multiset是默认创建的, 它将对所有对in递增顺序根据第一要素在所有对中, 如果任何两个或两个以上对中的第一个元素是等于然后将根据对的第二个元素.
当一个对Multimap是默认创建的, 它将对i中的所有对进行排序递增顺序根据第一要素在所有对中, 如果任何两个或两个以上对中的第一个元素相等, 则它将根据插入顺序到一对Multimap。
【C++ STL Multiset与Multimap中的pair有什么区别()】以下是说明差异的程序:
程序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; |
推荐阅读
- PIC和ARM之间有什么区别()
- NodeJS和AngularJS之间有哪些区别()
- 多任务和多处理之间有什么区别()
- 多重处理和多重编程之间有什么区别()
- Python(算法|Python:递归算法(基础))
- # yyds干货盘点 # 手把手教你对抓取的文本进行分词词频统计词云可视化和情感分析
- Flutter组件ValueListenableBuilder使用#yyds干货盘点#
- #yyds干货盘点# Linux 通过 Maven 安装 Dubbo-admin
- ClickHouse 在 UBA 系统中的字典编码优化实践