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 << '
    ';

  • 相关阅读:
    算法训练 P1103
    算法训练 表达式计算
    算法训练 表达式计算
    基础练习 时间转换
    基础练习 字符串对比
    Codeforces 527D Clique Problem
    Codeforces 527C Glass Carving
    Codeforces 527B Error Correct System
    Codeforces 527A Glass Carving
    Topcoder SRM 655 DIV1 250 CountryGroupHard
  • 原文地址:https://www.cnblogs.com/liming19680104/p/13569200.html
Copyright © 2011-2022 走看看