STL之Multimap容器和Pair对组

Multimap时map映射容器的一种,其拥有map的全部内容,并在此基础之上,multimap还具有了可以重复保存元素的功能,与上文的mutliset差不多,任何进行访问单个值得语句访问均只会返回第一个位置。

cpp 复制代码
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
	multimap<string, int> m_map;
	string name = "XiaoMing";
	m_map.insert(make_pair(name, 50));
	m_map.insert(make_pair(name, 55));
	m_map.insert(make_pair(name, 60));
	m_map.insert(make_pair("zhangsan", 30));
	//查找name并打印
	int k;
	multimap<string, int>::iterator m;
	m = m_map.find(name);
	for (k = 0; k != m_map.count(name); k++, m++)
	cout << m->first << "--" << m->second << endl;
	return 0;
}

1、什么是Pair对组?

pair只含有两个元素,可以看作是只有两个元素的结构体。对于成对出现的数据,利用对组可以返回两个数据。
在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型不必相同,可以在定义时进行成员初始化。

  • 标准头文件 #include,vs里面,某些编译器可以不声明这个头文件而直接使用,貌似在C++中,pair被放入了std命名空间中了。

2、Pair初始化

格式为:template <class T1, class T2> struct pair;

在现实情况中我们可以像类似于STL创建新容器一样创建pair也可以直接使用,如下:

cpp 复制代码
pair<int,int> p;
cpp 复制代码
pair<int,int> p(10,20);

或者是

cpp 复制代码
map<char,int> m;
cpp 复制代码
m.insert(pair<char,int>('a',10));

3、Pair数据访问

cpp 复制代码
//数据类型 数据
pair<string, int>p("武松", 17);
cout << "姓名:" << p.first << " 年岁:" << p.second << endl;
cpp 复制代码
//和结构体类似,first代表第一个元素,second代表第二个元素
pair<char, float>p1=make_pair('p',3.1415 );
cout << "字符:" << p1.first << " 小数:" << p1.second << endl;

4、make_pair

函数原型template pair make_pair(T1 a, T2 b) { return pair(a, b); }

可以通过make_pair生成我们的所需要的pair,对于一般的pair而言,如果需要对其进行赋值,则需要pair<int,int> p; p.first=10,p.second=20;

但如果使用make_pair方法,则可以变成如下内容:pair<int,int> p; p=make_pair(10,20);

相关推荐
j7~1 小时前
【C++】《C++STL 笔记:搞懂序列 / 关联容器,聊聊 set 和 map》
c++·set·map·multimap·multiset·键值对pair·序列是容器和关联式容器
luteres1 小时前
Mybatis+SSM整合笔记
java·开发语言·mybatis
郝学胜-神的一滴2 小时前
《C++11 工程级应用01:告别冗长类型,开启简洁高效编码新时代》深度解读
开发语言·c++·算法·软件开发·系统设计
其实防守也摸鱼2 小时前
推荐一个自动化教育SRC漏洞挖掘系统--AutoHunter
运维·开发语言·人工智能·学习·安全·web安全·自动化
覆东流8 小时前
7.Java数组
java·开发语言·后端
m0_719084118 小时前
限流和获取请求ip的方法
java
码行山野赴时序归途8 小时前
三道经典数组题:从暴力到最优的算法思维
c语言·开发语言·数据结构·算法·leetcode
lzhdim9 小时前
提高 SQL 语句执行速度的方法
java·开发语言·数据库·sql·oracle
JavaPub-rodert9 小时前
王仕宇在 Go Context 如何解决协程泄漏与超时控制
开发语言·后端·golang·iphone·javapub·王仕宇
深漂的华哥9 小时前
Ruoyi-Plus前后端分离场景下,数据加密传输
java·spring boot·后端·开源·maven·ruoyi