C++ - tuple

原文地址:http://blog.csdn.net/xiahn1a/article/details/41670203

在C++中的tuple和python语言中是类似的,是一个强大的允许存放多个不同类型数据的容器,是对pair的泛化。

要在C++中使用tuple,首先需要引用头文件tuple及名空间std。

和tuple相关的一共有4个函数,分别介绍

1. make_tuple: 用于创建tuple

auto tup1 = std::make_tuple("Hello World!", ‘a‘, 3.14, 0);

上述代码创建了一个tuple <const char*, char, double, int>类型的元组。

可以看出,在tuple之中可以是完全不同的数据类型。

2. tie: 用于拆开tuple

auto tup1 = std::make_tuple(3.14, 1, ‘a‘);
double a;
int b;
char c;
std::tie(a, b, c) = tup1;

这样做的结果是a = 3.14, b = 1, c = ‘a‘。

如果不想要某一位的值,可以直接将其用ignore代替。

std::tie(ignore, b, c) = tup1;

 

2.2 .拆开tuple2:

auto tup1 = std::make_tuple(3.14, 1, ‘a‘);
double a = get<0>(tup1); 

int b = get<1>(tup1); 

char c= get<2>(tup1);

这样做的结果是a = 3.14, b = 1, c = ‘a‘。

3. forward_as_tuple: 用于接受右值引用数据生成tuple

auto tup2 = std::forward_as_tuple(1, "hello");

上述代码创建了一个tuple<int &&, char (&)[6]>类型的元组。

可以看出,tuple中的参数全部为右值引用。而前面讨论的tie函数就只能接受左值。

4. tuple_cat: 用于连接tuple

std::tuple<float, string> tup1(3.14, "pi");
std::tuple<int, char> tup2(10, ‘a‘);
auto tup3 = tuple_cat(tup1, tup2);

将tup1和tup2连起来就成了tup3。

对于获取tuple中元素,有以下操作

1. get<i>: 获取第 i 个元素的值

std::tuple<float, string> tup1(3.14, "pi");
cout << get<0>(tup1);

这样就输出了tup1中的第一个元素3.14.

2. tuple_element: 获取tuple中特定元素数据类型

std::tuple_element<0, decltype(tup1)>::type

这样就获取到了tup1中第一个元素的数据类型。

注意:获取到的就是数据类型,如int,char。而不是写有“int”或者“char”的字符串。

3. size: 获取tuple中元素个数

std::tuple<float, string> tup1(3.14, "pi");
cout << tuple_size<decltype(tup1)>::value;

输出结果为2,表示该tuple中有两个元素。

可以看出,tuple是一个非常强大的数据结构,比以前常用的如pair,vector等都要强大很多。

上述代码均在VS2015中测试通过。

有同学说有部分内容涉及到C++ 14,最低要求VS2015才能通过。但tuple这个类在C++ 11中就有,在VS2013中可以使用,在VS2015中对其有所补充。

时间: 2024-12-26 21:41:12

C++ - tuple的相关文章

int、str、list、tuple、dict补充

一.int a = 123 b = a# a与b指向同一个地址值 c = 123 d = 123 e = 123 #d.c.e当在-5~257这个范围时,都指向一个地址值(Python优化的结果,当超出这个范围,id与之不同) 二.str a. name = "你猜" for i in name: print(i) bytes_name = bytes(i, encoding='utf-8')# 字符转换成字节 print(byte_name)# 16进制表示 for byte in

SWIFT中函数返回值为Tuple

在playgroundm内键入以下代码,求一个成绩数组内最大分值和最小分值 func maxminScore(scores:Array<Int>) -> (maxScore:Int,minScore:Int)? { //一个可以空的Tuple if scores.isEmpty{ return nil  //判断是否有值,没值就返回一个空值 } var maxScore = scores[0], minScore = scores[0] for score in scores[1..&l

C# Tuple&lt;T1,T2....T&gt;元组的使用

1) 先说组元:一个数据结构,由通过逗号分割的,用于传递给一个程序或者操作系统的一系列值的组合. NET Framework 直接支持一至七元素的元组 Tuple<T1> Tuple<T1, T2> Tuple<T1, T2, T3> Tuple<T1, T2, T3, T4> Tuple<T1, T2, T3, T4, T5> Tuple<T1, T2, T3, T4, T5, T6> Tuple<T1, T2, T3, T4

python的min()函数也可用于比较tuple

>>> a = (2,'asv','dfg') >>> b = (3,'gsg','weg') >>> c = (5,'bad','ser') >>> min(a, b, c) (2, 'asv', 'dfg') >>> 这是官方文档 min(iterable[, key])min(arg1, arg2, *args[, key]) Return the smallest item in an iterable or

C++11 新特性之 tuple

我们在C++中都用过pair.pair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同.pair可以使用make_pair构造 pair<int, string> p = make_pair(1, "a1"); 如果传入的参数为多个,那么就需要嵌套pair,如下代码 #include <iostream> #include <map> using namespace std; int main() { //<int, string,

python3_list and tuple

>>>list=['a',1,'1'] >>> dir(list) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul

4. Python里面如何实现tuple和list的转换

# Python里面如何实现tuple和list的转换 li = [1,2,3,4] print(tuple(li)) li1 = (1,2,3,4) print(list(li1)) str = '123' print(list(str))

python数据结构list,string,tuple,set,dictionary常用操作

1-列表list常用的一些方法如下: 上述的list.index(item),与string.find(item)类似 list与range快速生成list的方法: 1 >>>lst=list(range(10)) #lst=[0,1,2,3,4,5,6,7,8,9] 2 >>>list(range(5,10)) #[5,6,7,8,9] 3 >>>list(range(5,10,2)) #[5,7,9] 4 >>>list(rang

详解C# Tuple VS ValueTuple(元组类 VS 值元组)

C# 7.0已经出来一段时间了,大家都知道新特性里面有个对元组的优化:ValueTuple.这里利用详尽的例子详解Tuple VS ValueTuple(元组类VS值元组),10分钟让你更了解ValueTuple的好处和用法. 如果您对Tuple足够了解,可以直接跳过章节"回顾Tuple",直达章节"ValueTuple详解",查看值元组的炫丽用法. 回顾Tuple Tuple是C# 4.0时出的新特性,.Net Framework 4.0以上版本可用. 元组是一种

使用list和tuple

使用list和tuple 阅读: 420339 list Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 比如,列出班里所有同学的名字,就可以用一个list表示: >>> classmates = ['Michael', 'Bob', 'Tracy'] >>> classmates ['Michael', 'Bob', 'Tracy'] 变量classmates就是一个list.用len()函数可以获得list元