• C++中pair的用法


    C++pair类型:

    标准库类型--pair类型定义在utility头文件中定义:

    1、pair的创建和初始化

    pair包含两个数值,与容器一样,pair也是一种模板类型。但是又与之前介绍的容器不同,在创建pair对象时,必须提供两个类型名,两个对应的类型名的类型不必相同

    pair<string,string>anon;
    pair<string,int>word_count;
    pair<string, vector<int> >line;

    当然也可以在定义时为每个成员提供初始化式:

    pair<string,string>author("James","Joy");

    pair类型的使用相当的繁琐,如果定义多个相同的pair类型对象,可以使用typedef简化声明:

    typedef pair<string,string> Author;
    Author proust("March","Proust");
    Author Joy("James","Joy");

    2、pair对象的操作

    对于pair类,可以直接访问其数据成员:其成员都是公有的,分别命名为first和second,只需要使用普通的点操作符

    string firstBook;
    if(author.first=="James" && author.second=="Joy")
        firstBook="Stephen Hero";

    3、生成新的pair对象

    除了构造函数,标准库还定义了一个make_pair函数,由传递给它的两个实参生成一个新的pair对象

    pair<string, string> next_auth;
    string first,last;
    while(cin>>first>>last) {
        next_auth=make_pair(first,last);
        //...
    }

    还可以用下列等价的更复杂的操作:

    next_auth=pair<string,string>(first,last);

    由于pair的数据成员是公有的,因而可如下直接地读取输入:

    pair<string, string> next_auth;
    while(cin>>next_auth.first>>next_auth.last) {
        //...
    }
     1 #include<iostream>
     2 #include<string>
     3 #include<vector>
     4 #include<utility>
     5 using namespace std;
     6  
     7 int main()
     8 {
     9     pair<string, int>p;
    10     typedef vector< pair<string, int> > VP;
    11     VP vp;
    12     for (int i = 0; i < 5; i++) {
    13         cin >> p.first >> p.second;
    14         vp.push_back(make_pair(p.first, p.second));
    15     }
    16     VP::iterator it;
    17     for (it = vp.begin(); it != vp.end(); it++)
    18         cout << it->first << "," << it->second << endl;
    19     system("pause");
    20     return 0;
    21 }
  • 相关阅读:
    Some Depth Theory
    Hom和$otimes$如何把我绕晕
    A natrual way to introduce homotopy groups
    指数多项式的Galois群计算
    Trianglated Category and Derived Categories
    最近的代数课上的一些灵魂提问
    致青年朋友的一封信 莫洛亚
    一个函数证明题
    游客的故事
    14. 运算符重载(二)
  • 原文地址:https://www.cnblogs.com/nilbook/p/13915915.html
Copyright © 2020-2023  润新知