17

我的印象是定义自己的结构总是更好,这样我就可以使用有意义的字段名称而不是firstand second

标准使用的一个地方std::pair是访问std::map. first是关键,second也是价值。key_value_pair拥有一个特定的模板,并将其字段称为keyandvalue而不是firstand不是更好second吗?在我看来,它可以免费使代码更具可读性。

4

1 回答 1

11

当我需要包含 2 个或更多对象的本地包时,我通常使用对(和元组)。

主要用例是函数的返回类型:C++ 不允许返回多个值,但允许返回具有多个字段的结构。我更喜欢使用一对或元组,而不是使用输出参数。

第二个用例是用于元素的临时存储;例如自动operator<生成

struct A { int a; int b; int c; };

你可以operator<这样写:

bool operator<(A const& left, A const& right) {
    return std::tie(left.a , left.b , left.c )
         < std::tie(right.a, right.b, right.c);
}

它会自动生成正确的字典顺序(很多人搞砸了这些运算符......)。

于 2013-10-29T10:47:51.430 回答