tuple用法

转载 2018年04月15日 16:45:20

了解tuple: 
- tuple是模板,tuple所有成员都是public的 
- 使用tuple的相关操作,需要包含头文件tuple。 
- 希望将数据组合成单一对象时,使用tuple非常有用。(快而随意的数据结构) 
- 一个tuple可以有任意数量的成员,tuple的成员类型也不相同。 
- 一个确定的tuple类型的成员数目是固定的,意味着不能有添加和删除能够改变成员数目的操作。

定义和初始化tuple: 

1.当我们定义一个tuple时,需要指出每个成员的类型。创建tuple对象时,可以使用tuple的默认构造函数,该默认构造函数对每个成员进行 值初始化

tuple<int float size_t> threet; 

2.初始化tuple:tuple的构造函数是 explicit 的,因此必须使用 直接初始化

tuple<size_t,siez_t> tup={1,2,3};//错误
tuple<string,vector<double>,int,list<int>> someVal("tuple",{2.14,3.15},100,{1,2,3})//正确
tuple<int,int,double> some{2,3,3.15};//这样也行,注意与上面的括号

3.make_tuple函数:用来生成tuple对象,用初始值的类型推断tuple类型

auto itme=make_tuple("string",3,20.01);
//item的类型为tuple<const char*,int,double>

访问tuple的成员 
1.get标准库模板:为了使用get获取tuple的成员,我们必须指定一个 显示模板实参(在<>里,<>里面的值必须是 常量表达式),表示访问第几个成员。还需要传递给get一个tuple对象,返回指定成员的 引用。 

get(m):m如果是一个左值,该表达式返回左值引用,否则是一个右值引用

auto itme = make_tuple("string", 3, 20.01);
auto book = get<1>(itme);//返回tuple对象item的第二个成员,从0开始计数

2.类模板tuple_size:查询tuple成员数量。使用tuple_size需要知道tuple对象类型(确定一个对象类型使用 decltyple),tuple_size有一个public static的数据成员value,表示给定tuple中的成员数量。

auto itme = make_tuple("string", 3, 20.01);
auto sz = tuple_size<decltype(itme)>::value;//sz为3

3.类模板tuple_element:查询tuple成员的类型。tuple_element接受一个索引(从0开始)和一个tuple对象类型。tuple_element有一个public的成员type,表示给定tuple类型中指定成员的类型

auto itme = make_tuple("string", 3, 20.01);
tuple_element<1, decltype(itme)>::type ctype;//ctype的类型为int

关系和相等运算符 
条件:只有2个tuple具有相同数量的成员,才可以比较。比较时,每对成员必须是合法的,简单来说就是2个tuple成员类型应该相同。 

高级用法:从函数返回多个值。由于tuple定义了<和==运算符,因此还可以将tuple序列传递给算法,并且可以在无序容器中将tuple作为关键字类型

参考地址:https://blog.csdn.net/chayalikemei/article/details/51105630

C#Tuple的用法

一.返回两个参数的常用方法 private void button1_Click(object sender, EventArgs e)         {             string va...
  • zhaowei303
  • zhaowei303
  • 2014-01-06 23:11:51
  • 3052

c++ tr1和Boost中,tuple、tie的用法

在c++ 98标准的STL中,只有一个pair可以容纳两个不同的类型。 我们知道在Python中,有一种tuple,可以把任意多类型的不同数据组成一组tuple,如今的tr1标准,也支持这种数据结构...
  • Plutus_Lee
  • Plutus_Lee
  • 2014-02-13 11:31:08
  • 1417

C++11的tuple用法笔记

#include #include #include using std::cout ; using std::endl ; using std::tuple; using std::vecto...
  • luopeiyuan1990
  • luopeiyuan1990
  • 2016-04-15 09:11:31
  • 2770

C# Tuple的用法

Tuple是返回多个参数,C# 4.0引入 最多支持8个参数,第八个参数是Tuple,意思就是参数多于8个就开始嵌套调用了 一个函数返回多个类型,这样就不在用out , ref等输出输入参数了...
  • w200221626
  • w200221626
  • 2016-08-31 17:40:48
  • 3597

python list tuple dict set特点总结

学习python过程中,对几种基本数据有些混淆,为加强记忆,特保存为此博客。 名称 可变性 存在形式 可重复性 有序性 其他特点 List(列表) 可以修改元素...
  • breakair
  • breakair
  • 2018-01-29 10:42:15
  • 121

Tuple

如果我们想在一个方法中返回多个值,多个不同类型的值,该怎么办呢?数组,List,Dictionary,各有千秋,但不一定都适合我们的要求。它们都可以算是个集合,更适合多行的情况。如果定义一个类,有时又...
  • leftfist
  • leftfist
  • 2015-01-28 18:25:04
  • 3797

C++中使用tuple

本文讨论的是在C++ 11标准下使用tuple,而不是python语言。 说到tuple,肯定会第一时间想到python语言,但tuple也不仅仅只在python中有,在C#,C++等语言中都有这样的...
  • xiahn1a
  • xiahn1a
  • 2014-12-02 04:43:20
  • 4414

Set、Map、Tuple、队列操作实战

本节主要内容 mutable、immutable集合Set操作实战Map操作实战Tuple操作实战队列操作实战栈操作实战 mutable、immutable集合 以下内容来源于Sca...
  • oh_Mourinho
  • oh_Mourinho
  • 2016-10-12 18:42:44
  • 766

C++STL中的tuple 与 pair (piecewise construction)

tuple t(1, 2.22);     pair p1(42, t);     pair p2(piecewise_construct_t, make_tuple(32), t); 看STL...
  • hahahzzzzz
  • hahahzzzzz
  • 2016-05-19 20:35:04
  • 704

c++ tuple类型

c++ tuple类型个人笔记 了解tuple: - tuple是模板,tuple所有成员都是public的 - 使用tuple的相关操作,需要包含头文件tuple。 - 希望将数据组合...
  • chayalikemei
  • chayalikemei
  • 2016-04-09 15:58:25
  • 2650
收藏助手
不良信息举报
您举报文章:tuple用法
举报原因:
原因补充:

(最多只允许输入30个字)