什么时候使用std :: pair好?

时间:2013-10-29 10:30:39

标签: c++ coding-style std-pair

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

标准使用std::pair的一个地方是访问std::map的元素。 first是关键,second是值。拥有特定的key_value_pair模板并将其字段称为keyvalue而不是firstsecond会不会更好?在我看来,这将使代码更加可读,而且不需要任何费用。

1 个答案:

答案 0 :(得分:10)

当我需要一个包含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);
}

它会自动生成一个正确的字典顺序(很多人搞砸了那些操作员......)。