其它的一些高级主题
Tuples
tuple
是C++11新引入的feature,类似pair
模板,tuple
中的每个元素都可以有不同的类型,和pair
不同的是,tuple可以有任意多个成员。我们可以使用两种方式来构造tuple
对象
//default init method, each member is set to default value
tuple<size_t, size_t, size_t> threeD; //all members are set to 0
tuple<string, vector<double>, int, list<int>> items = {
"constants",
{3.14, 2.718},
42,
{0,1,2,3,4,5}
};
//use make_tuple
auto item = make_tuple("0-999-78345-X",3,20.00);
访问tuple对象有些奇怪,我们不能用tuple.get
,而是需要用标准库函数std::get
来访问。std::get
是一个函数模板,我需要指定tuple成员的位置作为模板参数,此外,std::get
返回的是tuple元素的引用
auto book = get<0>(item); //返回item的第一个成员
auto cnt = get<1>(item); //返回item的第二个成员
当tuple的成员较多时,想要表示tuple对象的类型往往会很复杂,我们可以使用下面两个模板函数来查询tuple成员的数量和类型
typedef decltype(item) trans;