• STL pair类型的介绍


    pair标准库类型它定义在头文件utility中。

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

    pair<string,string>anon;//保存两个string
    pair<string,size_t>word_count;//保存一个string和一个size_t
    pair<string,vector<int>line>;//保存string和vector<int>
    

      pair的默认构造函数对数据成员进行值初始化。因此,anon是一个包含两个空string的pair。line保存一个空string和一个空vector。word_count中的size_t成员值为0,而string成员被初始化为空。

    我们可以为每一个成员提供初始化器:

    pair<string,string>author{"James","Joyce"};

    这条语句创建了一个author的pair,两个成员被初始化为“James”和“Joyce”。

    与其他标准类型不同,pair的数据成员是public。两个成员分别为first和second。我们用普通的成员访问符号来访问他们。

    pair上的操作:

    pair<T1,T2>p;//p是一个pair,两个类型分别为T1和T2的成员都进行了值初始化
    pair<T1,T2>p(v1,v2);//p是一个成员类型为T1和T2的pair;first和second成员分别用v1和v2进行呢初始化
    pair<T1,T2>p={v1,v2};//等价于p(v1,v2)
    make_pair(v1,v2);//返回一个用v1和v2初始化的pair。pair的类型从v1和v2的类型推断出来。
    p1==p2//当first和second成员分别相等时,两个pair相等。相等性判断利用元素的==运算符实现。
    

      

     使用场景:当我们要对map的values进行排序时可以先把map中的元素转化为pair在一个一个存入vector中,然后就可以进行排序了。为什么呢?因为pair‘的数据成员是public的,而map的数据成员是private的所以没法直接对map的数据成员进行操作,但是可以直接对pair的数据成员进行排序。

  • 相关阅读:
    mysql 复合索引 为什么遵循最左原则
    php设计模式--门面模式
    php设计模式--装饰器模式
    php 设计模式 --组合器模式
    2020暑假训练日记
    2020省选联考翻车记
    题解 洛谷P6560 [SBCOI2020] 时光的流逝
    题解 洛谷P6562 [SBCOI2020] 归家之路
    题解 洛谷P6561 [SBCOI2020] 人
    题解 CF1372E Omkar and Last Floor
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/10157177.html
Copyright © 2020-2023  润新知