pair类型的使用

本文深入讲解了C++标准库中的pair容器,包括其结构、声明、初始化方式以及如何进行比较和访问元素。同时,介绍了使用make_pair函数和tie函数来创建和解构pair对象的方法,并展示了如何对pair数组进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、pair简介

pair是一个含有两个数据的数据组,可以看作结构体:

struct pair
{
    Etype first:
    Etype second;
};

其中Etype是用户自己设置的数据类型,(用pair声明的数组好像只能开到100000)

 

二、pair的声明与初始化

pair<T1, T2> p1;         //创建一个空的pair对象(使用默认构造),
						 //它的两个元素分别是T1和T2类型,采用值初始化。
						 
pair<T1, T2> p1(v1, v2);  //创建一个pair对象,它的两个元素分别是T1和T2类型,
					 	  //其中first成员初始化为v1,second成员初始化为v2。
					 	  
p1=make_pair(v1, v2);     // 以v1和v2的值创建一个新的pair对象,其元素类型分别是v1和v2的类型。

p1 < p2;                  // 两个pair对象间的小于运算,其定义遵循字典次序:
						//如 p1.first < p2.first 或者 !(p2.first < p1.first) && (p1.second < p2.second) 则返回true。
p1 == p2;                  // 如果两个对象的first和second依次相等,则这两个对象相等;该运算使用元素的==操作符。
p1.first;                   // 返回对象p1中名为first的公有数据成员
p1.second;                 // 返回对象p1中名为second的公有数据成员

 

        pair<string,int> a[10];
	a[0]=make_pair("one",1); //使用make_pair 
	a[1]=pair<string,int>("tow",2);//使用对象说明 
        typedef pair<string,string> Author; //使用typedef简化声明

 

三、一些操作

1、访问两个元素操作可以通过first和sencond访问:

pair<int ,double> p1;
p1.first = 1;
p1.second = 2.5;
cout<<p1.first<<' '<<p1.second<<endl;//输出结果:1 2.5

2、通过tie获取pair元素值

pair<string, int> getPreson()
{
    return make_pair("Sven", 25);
}
 
int main(int argc, char **argv) 
{
    string name;
    int ages;
    tie(name, ages) = getPreson();
    
    cout << "name: " << name << ", ages: " << ages << endl;

    return 0;
}

4、排序

用sort()排序,默认按照first的值排序

#include<bits/stdc++.h>
using namespace std;
bool cmp(pair<string, int>a, pair<string, int>b)
{
    return a.second < b.second;
}//根据second的值升序排序

int main()
{
	pair<string,int> a[10];
	a[1]=make_pair("one",1); //使用make_pair 
	a[0]=pair<string,int>("tow",2);//使用对象说明 
	
	sort(a,a+2,cmp) ;
	cout<<a[0].first;
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值