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;
}
相关推荐
不学无术の码农2 分钟前
《Effective Python》第九章 并发与并行——使用 Queue 实现并发重构
开发语言·python
晨曦5432108 分钟前
Python面向对象编程:动物继承体系解析
开发语言·python
半夏知半秋13 分钟前
skynet源码学习-skynet_env守护进程
服务器·学习·系统架构
是紫焅呢26 分钟前
D包和模块.go
开发语言·后端·golang·学习方法·visual studio code
大老板a27 分钟前
c++左值、右值还是不懂?进来五分钟学会
c++
SoFlu软件机器人33 分钟前
需求迷雾中挣扎?飞算 JavaAI 助你精准破局
java·开发语言·数据库·人工智能
Cherl.35 分钟前
C++ 函数模板与类模板
开发语言·c++·类和对象··函数模板·类模板
foDol36 分钟前
C++单例模式
c++·单例模式·设计模式
简诚1 小时前
CSPNet: 一种增强CNN学习能力的新型骨干网络
人工智能·学习·cnn
JXNL@1 小时前
STM32外设学习之ADC
stm32·嵌入式硬件·学习·adc