tuple扩展了pair的概念,拥有任意数量的元素,其中每个类型都可以被指定,或来自编译期推导
tuple的操作
make_tuple()
创建一个tuple.
get<>()访问tuple元素
示例:
便捷函数make_tuple()和tie()
make_tuple()
会根据value建立tuple,不需要明确指出元素的类型:
make_tuple(22,44,"nico");
如果你打算改动tuple内的一个既有值,可以使用ref:
std::string s;
auto x = std::make_tuple(ref(s));
std::get<0>(x) = "my value";
如果想最方便地在tuple中使用reference,可选择tie(),它可以建立一个内含reference的tuple:
std::tuple<int,float,std::string>t(77,1.1,"more light");
int i;
float f;
std::string s;
std::tie(i,f,s) = t;
这样i,f,s都被赋值为t中对应的值
使用tie()时,可以使用std::ignore
允许我们忽略tuple的某些元素:
ignore是一个函数,返回一个ignore结构
这个结构忽略赋值
其他tuple特性
有些辅助函数特别为tuple设计:
如下:
tuple_size::value返回元素个数
tuple_element::type<index,tupletype>
获取第index个元素的类型
tuple_cat
串接所有形式的tuple,甚至包括pair<>