通用常见工具汇总<Pair,Tuple,>.

来源:互联网 发布:洋葱英语软件 编辑:程序博客网 时间:2024/06/16 12:32

目录:

1.Pair类型

         2.Tuple类型<不定数数组>

1.Pair类型

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

 本文地址:http://www.cnblogs.com/archimedes/p/cpp-pair.html,转载请注明源地址。

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) {    //...}

4、编程实践

练习:编写程序读入一系列string和int型数据,将每一组存储在一个pair对象中,然后将这些pair对象存储在vector容器

#include<iostream>#include<string>#include<vector>#include<utility>using namespace std;int main(){    pair<string, int>p;    typedef vector< pair<string, int> > VP;    VP vp;    while(cin>>p.first>>p.second)    {        vp.push_back(make_pair(p.first,p.second));            }    VP::iterator it;    for(it=vp.begin(); it!=vp.end(); it++)        cout<<it->first<<","<<it->second<<endl;    return 0;}
原文转载自:http://www.cnblogs.com/wuyudong/p/cpp-pair.html



2.Tuple类型<不定数数组>

tuple是C++11新标准里的类型。它是一个类似pair类型的模板。pair类型是每个成员变量各自可以是任意类型,但是只能有俩个成员,而tuple与pair不同的是它可以有任意数量的成员。但是每个确定的tuple类型的成员数目是固定的

当我们希望将一些不同类型的数据和成单一对象时,可能大家会想到结构体(类),tuple是一种比结构体来的更加方便的类型 
tuple的简单使用实例

#include<iostream>//定义在此头文件下#include<tuple>using namespace std;int main(void){    tuple<int,int,float> tp(1,2,3.1);    cout<<"第一个元素为:"<<get<0>(tp)<<endl;    cout<<"第二个元素为:"<<get<1>(tp)<<endl;    cout<<"第三个元素为:"<<get<2>(tp)<<endl;    return 0;}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
操作说明make_tuple(v1,v2,v3,v4…vn)返回一个给定初始值初始化的tuple,类型从初始值推断t1 == t2当俩个tuple具有相同数量的成员且成员对应相等时t1 != t2与上一个相反get(t)返回t的第i个数据成员tuple_size::value给定了tuple中成员的数量

原文转载自:http://blog.csdn.net/shreck66/article/details/48243447

原创粉丝点击