您的位置:首页 > 大数据 > 人工智能

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

2017-07-05 09:03 288 查看
目录:

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: