zoukankan      html  css  js  c++  java
  • C++pair-组合两个数据

    pair是将2个数据组合成一组数据,当需要这样的需求时就可以使用pair。另一个应用是,当一个函数需要返回2个数据的时候,可以选择pair。 pair的实现是一个结构体,主要的两个成员变量是first second 因为是使用struct不是class,所以可以直接使用pair的成员变量

    pair类型定义在#include <utility>头文件中,定义如下:

    类模板:template<class T1,class T2> struct pair

    参数:T1是第一个值的数据类型,T2是第二个值的数据类型

    功能:pair将一对值(T1和T2)组合成一个值,

            这一对值可以具有不同的数据类型(T1和T2),

            两个值可以分别用pair的两个公有函数first和second访问

    定义(构造函数):

    pair<T1, T2> p1;            //创建一个空的pair对象(使用默认构造),它的两个元素分别是T1和T2类型,采用值初始化。
    pair<T1, T2> p1(v1, v2);    //创建一个pair对象,它的两个元素分别是T1和T2类型,其中first成员初始化为v1,second成员初始化为v2。
    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的公有数据成员
    #include<iostream>
    #include <utility>
    #include  <vector>
    
    int main()
    {
        std::pair<std::string, std::string> anon;        // 创建一个空对象anon,两个元素类型都是string
        std::pair<std::string, int> word_count;     // 创建一个空对象 word_count, 两个元素类型分别是string和int类型
        std::pair<std::string, std::vector<int> > line;  // 创建一个空对象line,两个元素类型分别是string和vector类型
        std::pair<std::string, std::string> author("James", "Joy");    // 创建一个author对象,两个元素类型分别为string类型,并默认初始值为James和Joy。
        std::pair<std::string, int> name_age("Tom", 18);  //初始化
        std::pair<std::string, int> name_age2(name_age);  
        std::pair<int, double> p1(1, 1.2);
        std::pair<int, double> p2 = p1;
        std::pair<int, double> p3;
        p3 = p1;  
    
        return 0;
    }
    std::pair<int, double> p1;
    
        p1.first = 1;
        p1.second = 2.5;
        std::cout << p1.first << ' ' << p1.second << std::endl;
        std::pair<int, double> p1;
        p1 = std::make_pair(1, 1.2);
    
        std::cout << p1.first << p1.second << std::endl;
    
       int a = 8;
       std::string m = "James";
    
        std::pair<int, std::string> newone;
    
        newone = make_pair(a, m); // 用指定的两个值创建一个新的pair对象,其元素类型分别是两个值的类型
        std::cout << newone.first << newone.second << std::endl;
    #include<iostream>
    #include <utility>
    #include  <vector>
    
    std::pair<std::string, int> getPreson() {  //pair对象作为数据类型
        return std::make_pair("Sven", 25);
    }
    
    int main()
    {
        
        std::string name;
        int ages;
    
        std::pair<std::string, int> t = getPreson();
    
        std::cout << "name: " << t.first << ", ages: " << t.second << std::endl;
    
    
        return 0;
    }
    std::pair<int, char> foo(10, 'a');
        std::pair<int, char> bar(90, 'z');
    
        swap(foo, bar);  //交换两个pair对象的值
        std::cout << "foo contains: " << foo.first;
        std::cout << " and " << foo.second << '
    ';

  • 相关阅读:
    HDU4529 郑厂长系列故事——N骑士问题 —— 状压DP
    POJ1185 炮兵阵地 —— 状压DP
    BZOJ1415 聪聪和可可 —— 期望 记忆化搜索
    TopCoder SRM420 Div1 RedIsGood —— 期望
    LightOJ
    LightOJ
    后缀数组小结
    URAL
    POJ3581 Sequence —— 后缀数组
    hdu 5269 ZYB loves Xor I
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13569200.html
Copyright © 2011-2022 走看看