C++11之tuple和数据类型


C++11仲引入了多元数组tuple,用于存放不同数据的数组。
初始化方法有两种:
tuple() 构造函数
make_tuple() 创建函数


主要有以下几个常用函数:
head() 获取第一个元素的值
tail() 获取剩下所有元素的值
get<N>() 获取第N个元素的值,N必须为常量,无法使用循环遍历tuple
tuple_element<N, decltype(tup)>::type 获取第N个元素的类型
tuple_size<decltype(tup)>::value 获取元组tup的元素个数


另外关于类型:
auto 自动类型推导,从初始化表达式中推断出变量的数据类型
decltype 从一个变量或表达式中得到类型
听起来很混,看代码就知道了。

#include <map> // 使用tuple需要包含的头文件
#include <iostream>

using namespace std;


int main()
{
	tuple<int, char, string>tup0(1, 'A', "hello world");
	int e1 = tup0.head();// 1
	int e2 = tup0.tail().head(); // 'A'
	unsigned short cnt = tuple_size(decltype(tup0))::value; // 获取元素个数:3


	tuple<char, string> tup1 = tup0.tail(); 


	tuple<double, string> tup2 = make_tuple(1.1, "ABC");
	auto d0 = get<0>(tup2);// 1.1
	auto d1 = get<1>(tup2);// "ABC"
	cout <<typeid(d0).name()<< endl;// 获取元素的数据类型:double
	decltype(d0) d2 = d0;// 逆推d0的数据类型,并使用其声明一个变量d0,然后赋值为d0


	return 0;
}


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。