我的印象是,定义自己的结构总是更好,这样我就可以使用有意义的字段名称而不是first
和second
。
标准使用std::pair
的一个地方是访问std::map
的元素。 first
是关键,second
是值。拥有特定的key_value_pair
模板并将其字段称为key
和value
而不是first
和second
会不会更好?在我看来,这将使代码更加可读,而且不需要任何费用。
答案 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);
}
它会自动生成一个正确的字典顺序(很多人搞砸了那些操作员......)。