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;
}
相关推荐
clint4563 天前
C++进阶(1)——前景提要
c++
夜悊3 天前
C++代码示例:进制数简单生成工具
c++
郝学胜_神的一滴3 天前
CMake 021: IF 条件判据详诠
c++·cmake
_wyt0014 天前
洛谷 B3930 [GESP202312 五级] 烹饪问题 题解
c++·gesp
LDR0064 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术4 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript
通信小呆呆4 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
码云数智-园园4 天前
C++20 Modules 模块详解
java·开发语言·spring
H__Rick4 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee4 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale