【ACM】Pair

首先我们要知道少加载一点头文件是减少运行时间的主要途径之一。
C++中的pair模板包含在头文件 utility 中。

一个pair保存两个数据成员。类似容器,pair是一个用来生成特定类型的模板。当创建一个pair的时候,必须提供两个类型名,此时pair的数据成员将具有对应的类型。

pair<string, string> p1;
pair<string, size_t> p2;
pair<string, vector<int>> p3;

pair 的默认构造函数对数据成员进行值初始化,因此p1是包含着两个空string的pair,size_t的值为0 。
当然也可以为每一个成员提供初始化器。

pair<string, string> twt = {"TwT" , "tWt"};

pair的成员都是public,分别为first和second。
如果只给一个成员赋值,就会出现错误。

    pair<int ,int > a(2);
    cout<<"第一个元素是"<<a.first<<endl;
    cout<<"第二个元素是"<<a.second<<endl;
    //错误类型是no matching function for call to"std::pair<int,int>::pair(int)"

下面给出一些pair上的操作:

    pair<T1,T2> p1; //p1是一个pair,而且这两个类型分别为T1和T2的成员都进行了值初始化。
    pair<T1,T2> p2(v1,v2);//p2是一个成员类型为T1,T2的pair,first和second成员分别用v1和v2来进行初始化。
    pair<T1,T2> p3 = {v1,v2}; //同上。
    make_pair(v1 ,v2);//返回一个用v1和v2进行初始化的pair。
    p.first; //第一成员。
    p.second; //第二成员。

定义pair和初始化时空格将不会产生任何影响。初始化的时候尽量采用()的形式,{}初始化是C++11的标准,只有在一些新的IDE中才会支持。

make_pair()的使用:

#include <cstdio>
#include <string>  //没有的话string类型会报错
#include <iostream>

using namespace std;

int main()
{
    int a;
    string b="sad";
    pair<int , string> p;
    p = make_pair(a,b);
    cout<<p.first<<endl;
    cout<<p.second<<endl;
    return 0;
}

是否一定需要头文件utility?
上面代码中就是定义了一个pair对象,但是头文件中并没有utility。需要注意的是,如果没有头文件utility,但是必须要有using namespace std。(还是写上吧,一般头文件不多的时候也不会有很明显的时间延迟)

pair就像是一个只含有两个数据成员的结构体,经常会被用作其他stl容器的元素。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值