只有两个成员的anstd::pair
和an有区别吗?std::tuple
(除了std::pair
需要两个而且只有两个成员并且tuple
可能或多或少的明显......)
问问题
65471 次
6 回答
110
有一些区别:
std::tuple
标准并不要求永远是standard-layout。std::pair<T, Y>
如果两者都是标准布局T
,则每个Y
都是标准布局。pair
获取 a 的内容比获取 a 的内容要容易一些tuple
。您必须在案例中使用函数调用tuple
,而pair
案例只是一个成员字段。
但仅此而已。
于 2011-07-14T00:12:54.723 回答
40
一个std::tuple
的名字更长(一个额外的字符)。更多这些字符是用右手输入的,因此大多数人更容易输入。
也就是说,std::pair
只能有两个值——不是零、一、三或更多。两个值。然而,元组对值的数量几乎没有语义限制。因此,如果std::pair
您确实想要指定一对值,则可以使用一个更准确、类型安全的类型。
于 2011-07-14T00:14:04.250 回答
20
请注意,使用 C++ 17,可以使用相同的接口从具有两个元素的对和元组中读取数据。
auto [a, b] = FunctionToReturnPairOrTuple();
不需要使用get<>
:)
于 2019-05-29T20:43:02.000 回答
3
对于它的价值,我发现 std::tuple 的 GDB 输出更难阅读。显然,如果您需要超过 2 个值,则 std::pair 将不起作用,但我确实认为这是支持结构的一点。
于 2011-07-26T15:45:45.563 回答
2
也许值得注意的是,cppreference 指出:
“一对是具有两个元素的 std::tuple 的特定情况。”
于 2021-04-19T20:18:40.720 回答