zoukankan      html  css  js  c++  java
  • C++ STL pair详解

    一.解释:

      pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同。如果一个函数有两个返回值的话,如果是相同类型,就可以用数组返回,如果是不同类型,就可以自己写个struct ,但为了方便就可以使用 c++自带的pair ,返回一个pair,其中带有两个值。除了返回值的应用,在一个对象有多个属性的时候 ,一般自己写一个struct ,如果就是两个属性的话,就可以用pair 进行操作。pair 可以省的自己写一个struct .如果有三个属性的话,其实也是可以用的pair 的 ,极端的写法 pair <int ,pair<int ,int > >写法极端。(后边的两个 > > 要有空格,否则就会是 >>位移运算符)

    二.用法:

      1.头文件

    #include<utility>

     

      2.定义方法

    pair<int, string> a;
    /*表示a中有两个类型,第一个元素是int型的,第二个元素是string类型的,如果创建pair的时候没有对其进行初始化,则调用默认构造函数对其初始化。*/
    pair<string, string> a("James", "Joy");//直接初始化

      3.常用操作

        (1)对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员

    pair<string, string> a("Lily", "Poly"); 
    string name;
    name = pair.second;
    /*a.first 返回Lily
    a.second 返回 Poly*/

       (2)生成新的pair对象,可以使用make_pair对已存在的两个数据构造一个新的pair类型

    int a = 8;
    string m = "James";
    pair<int, string> newone;
    newone = make_pair(a, m);

    三.例子

    #include <utility>
    #include <iostream>
    using namespace std;
    typedef pair<string, string> au;  //利用typedef简化其声明
    int main()
    {
        int flag;
        string x1,x2;
        pair<string, string> p1("a","bc"); //创建一个pair对象,它的两个元素分别为string和string类型,其中first成员初始化为“a”,而second成员初始化为“ab”
        au p2("a","aa");
        au p3;
        string name;
        name=p1.second; //返回1中名为second的数据成员
        cout<<p1.first<<endl;
        cout<<name<<endl;
        flag=p1<p2;
        cout<<flag<<endl; //判断两个pair对象的大小按字典次序
        flag=p1>p2;
        cout<<flag<<endl;
        while(cin>>x1>>x2)
        {
            p3=make_pair(x1,x2); //生成一个新的pair对象
            cout<<p3.first<<"****"<<p3.second<<endl;
        }
        return 0;
    }

     

  • 相关阅读:
    【题解】洛谷 P3942 将军令【20201017 CSP 模拟赛】【贪心】
    ASP.NET上传文件的三种基本方法
    Android 最火的快速开发框架XUtils
    asp.net 上传文件到一般处理程序中
    Android版本:使用findViewById()用字符串/在一个循环
    android 调用系统图库查看指定路径的图片
    Android中实现日期时间选择器(DatePicker和TimePicker)
    Android自定义ListView的Item无法响应OnItemClick的解决办法
    Android开发配置,消除SDK更新时的“https://dl-ssl.google.com refused”异常
    mysql 修改密码
  • 原文地址:https://www.cnblogs.com/aiguona/p/7231377.html
Copyright © 2011-2022 走看看