STL学习-关联容器-pair数对

一.pair数对

1.pair介绍

pair是一个模板类,使用时引用<utility>文件

cpp 复制代码
#include<utility>

pair可将两个value处理为一个元素。C++标准库内多处用到了这个结构。尤其容器map、unordered map和unordered multimap就是使用pair来管理其内部元素(key value),任何函数如果需返回两个 value,也需要用到pair,例如minmax()。

pair是定义在std中的struct,其成员是公有的(public)

cpp 复制代码
namespace std(
template <typename T1,typename T2>
struct pair {
T1 first;//成员1
T2 second;//成员2
}
}

2.pair操作函数

举例:

cpp 复制代码
#include
using namespace std;
int main()
{
pair<int,double>p1;//创建一个空的pair
//注意访问first和second时没有()
cout<<"p1=("<< p1.first <<","<< p1.second <<")"<< endl;

pair<int,double>p2(10,23.4);//创建一个pair,数据为(10,23.4)
cout<<"p2=("<< p2.first<<","<< p2.second << ")"<< endl;

pair<int,double>p3(p2);//通过p2拷贝构造一个p3
p3.first = 100;
cout<<"p3=("<< p3.first<<","<< p3.second <<")"<< endl;

p1 = p3;//把p3赋值给p1
cout<<"p1 = p3后"<< endl;
cout<<"p1=("<< p1.first <<","<< p1.second <<")"<< endl;

p3 = make pair(100,200);
cout<<"p3 = make_pair(100,200)后"<< endl;
//通过get访问p3的成员
cout <<"p3=("<< get<0>(p3)<<","<<get<1>(p3)<< endl;

return 0;
}

找出数组的最小值和最大值

cpp 复制代码
#include <utility>
using namespace std;
pair<int,int>MinMax(int* arr,int len)//找到数组的最小值和最大值
{
int min = arr[0];//最小值
int max = arr[0];//最大值
for(int i=1;i<len;i++)
{
if(arr[i]< min)
min = arr[i];

if(arr[i]> max)
max= arr[i];
}
return make pair(min,max);
}

int main()
{
int arr[]={3,1,8,9,34,2,67,5,70,12,34,65,99,20};
auto p=MinMax(arr,sizeof(arr)/sizeof(arr[0]));
cout<<"最小值:"<< p.first<<",最大值:"<< p.second << endl;

return 0;
}
相关推荐
统计学小王子4 分钟前
《数学少年-从正负号到几何原本》(第一章:“刻度之上,零为分界“)--1.2 电梯与账单里的相反数字
学习·初中数学·初中数学科普·数学科普
流云鹤15 分钟前
03Java学习day(3)
java·学习
乐观勇敢坚强的老彭18 分钟前
C++信奥:开关门、开关灯问题
开发语言·c++·算法
冻柠檬飞冰走茶18 分钟前
PTA基础编程题目集 7-31 字符串循环左移(C语言实现)
c语言·开发语言·数据结构·算法
我命由我123451 小时前
棘轮效应极简理解
经验分享·学习·职场和发展·产品运营·求职招聘·职场发展·学习方法
a1117761 小时前
中文优先的企业 RAG 知识库 开源项目
开发语言·开源·kotlin
tt5555555555551 小时前
电工证学习笔记(二)
笔记·学习·电力
2301_777998341 小时前
C/C++:预处理详解
c语言·c++
wc881 小时前
微软EDGE浏览器功能学习
前端·学习·edge
破z晓1 小时前
javascript 导出excel表
开发语言·javascript·excel