tuple顾名思义是元组的意思,提起元组应该并不陌生,很受欢迎的python就有元组的概念,大家感兴趣可以去看看,这里主要介绍tuple的结构和常用使用方法。
首先来看官方给出元组的说明:元组(tuple)由预先确定数量的多种对象组成.元组可以看作是struct数据成员的泛化.TR1 tuple类型的C++11版本获益于像可变参数模板这样的C++11语言特性.TR1版本的元组需要一个由实现定义的包含的类型的最大数目,而且需要大量的宏技巧来实现.相比之下,C++11版本的不需要显式的实现定义的最大类型数目.尽管编译器有一个内部的模板实例化的最大递归深度,但C++11版的元组不会把它暴露给用户。
元组(tuple)结构:
#// 类版本声明
template<class _This,
class... _Rest>
class tuple<_This, _Rest...>
: private tuple<_Rest...>
{...}
元组使用代码:
#include<iostream>
#include<algorithm>
#include <tuple>
using namespace std;
int main() {
typedef std::tuple <int, double, long &, const char *> test_tuple;
long lengthy = 12;
test_tuple proof(100, 3.1415, lengthy, "tuple!");
lengthy = std::get<0>(proof); // 把'lengthy' 赋值为100.
std::get<3>(proof) = " Beautiful tuple!"; // 修改元组的第四个元素
size_t num = std::tuple_size<decltype(proof)>::value;//获取元组元素个数
cout << "num= "<<num << endl;
//获取第1个值的元素类型
std::tuple_element<1, decltype(proof)>::type cnt = std::get<1>(proof);
std::cout << "cnt = " << cnt << std::endl;
//比较
std::tuple<int, int> ti(24, 48);
std::tuple<double, double> td(28.0, 56.0);
bool b = (ti < td);
std::cout << "b = " << b << std::endl;
return 0;
}
只是浅谈tuple的使用,希望能给大家有所帮助。需要对源码更加深入的了解,请访问: