我的印象是定义自己的结构总是更好,这样我就可以使用有意义的字段名称而不是first
and second
。
标准使用的一个地方std::pair
是访问std::map
. first
是关键,second
也是价值。key_value_pair
拥有一个特定的模板,并将其字段称为key
andvalue
而不是first
and不是更好second
吗?在我看来,它可以免费使代码更具可读性。
我的印象是定义自己的结构总是更好,这样我就可以使用有意义的字段名称而不是first
and second
。
标准使用的一个地方std::pair
是访问std::map
. first
是关键,second
也是价值。key_value_pair
拥有一个特定的模板,并将其字段称为key
andvalue
而不是first
and不是更好second
吗?在我看来,它可以免费使代码更具可读性。
当我需要包含 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);
}
它会自动生成正确的字典顺序(很多人搞砸了这些运算符......)。