你应该为它声明一个结构.
get<0>(x)和get<1>(x),或甚至-C交++ 11的get<Foo>(x)和get<Bar>(x),是不太有意义和/或比惯用的x.foo或x.bar.
tuples最适合按顺序识别的非均匀打字的东西.
pairs是tuple在C++ 11之前编写的.
两者pair和tuple(array虽然我们在它)都是元组式的,因为他们支持std::tuple_size和get<N>.
在std库中被认为是一个错误,许多类型使用pair而不是具有正确命名字段的结构.即,如果map使用struct KV{ Key key; Value value; },它会更好.
现在,元编程支持KV作为通用对也会很好.所以,tuple_size和get<0>等,但扔掉命名字段通常是一个坏主意.名字有力量.
使用C++ 17,简单的structs开始使用结构化绑定,即使你不使它们"像元组一样".
如果你确实拥有其身份由非统一类型的顺序决定的东西,那tuple就是要走的路. pair是一种近乎传统的类型.有一些优点可以pair结束tuple,但tuple继续改进以删除它们(如隐式初始化tuple).