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 分钟前
【机器人】ROS2 机械臂控制(MoveIt2)从入门到实战
人工智能·python·神经网络·学习·算法·机器学习·机器人
闪电悠米5 分钟前
黑马点评-秒杀优化-04_lua_and_db_fallback
服务器·开发语言·网络·数据库·缓存·junit·lua
星雨流星天的笔记本6 分钟前
英语介词学习
学习
Shadow(⊙o⊙)10 分钟前
进程间通信0.0-pipe()匿名管道,详细分析进程池调度队列执行逻辑,进程池模拟实现。
linux·运维·服务器·开发语言·c++
lcj251114 分钟前
【list】【手撕 STL】List 容器全解析!迭代器 / 增删改查 / 去重排序,面试必背的核心考点!
c++·面试·list
zhangrelay14 分钟前
2000-2025 年适龄升学智能大模型整理数据
大数据·笔记·学习
指尖的爷17 分钟前
C++头文件的作用
开发语言·c++
keykey6.17 分钟前
反向传播与梯度下降:神经网络如何学习
开发语言·人工智能·深度学习·机器学习
RD_daoyi21 分钟前
GEO优化能为企业带来哪些价值?
大数据·人工智能·学习·搜索引擎·chatgpt
Jun62624 分钟前
QT(5)-第三方日志系统
开发语言·数据库·qt