zoukankan      html  css  js  c++  java
  • 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的数据成员进行排序。

  • 相关阅读:
    【CLR Via C#】2 程序集
    值类型与引用类型
    .Net Framework简介
    【CLR Via C#】15 枚举类型与位类型
    Dictionary的用法及用途
    枚举
    GitExtensions使用教程
    Bootstrap如何禁止响应式布局
    【StyleCop】StyleCop规则汇总
    优化SQL查询:如何写出高性能SQL语句
  • 原文地址:https://www.cnblogs.com/wuyepeng/p/10157177.html
Copyright © 2011-2022 走看看