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;
}
相关推荐
布莱克6055 分钟前
数组详解:定义、作用、应用场景及与链表的区别(C/C++ 代码讲解)
c语言·开发语言·c++·数组
hongmai66688818 分钟前
MP2348GTL-Z:这颗24V/4A同步降压芯片,把性能和体积平衡得恰到好处
c语言·开发语言·arm开发·单片机·5g
多弗朗皮卡丘22 分钟前
C语言梦开始的地方19:文件操作
c语言·开发语言
Dovis(誓平步青云)22 分钟前
折叠屏悬停看视频,上半屏和下半屏应该各做什么
android·java·服务器·开发语言·安全·音视频
benchmark_cc33 分钟前
Python量化实战:如何检测并剔除历史数据中的“闪崩/乌龙指”异常价格点?
开发语言·人工智能·python·量化·quantdash·量化数据源
2501_9378609437 分钟前
Java多线程初阶(下)—— synchronized、volatile、wait/notify与经典并发工具
java·开发语言·jvm
西西弗Sisyphus1 小时前
模型训练 不同批次大小与学习率下的训练损失对比(2)
学习·batchsize·lr·learning rate
笨笨饿1 小时前
#135_代码中的类型重定义艺术:从基础封装到函数类型设计
开发语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库
统计学小王子1 小时前
R语言入门——ggplot2图例增加公式
开发语言·r语言
牛油果子哥q1 小时前
C++内存池与对象池精讲:内存碎片、自定义分配器、对象池实现、STL allocator原理、工程落地与性能对比
java·开发语言·c++