【发布时间】:2012-06-04 01:59:51
【问题描述】:
可能重复:
Implementing comparision operators via 'tuple' and 'tie', a good idea?
有时我需要写一些丑陋的仿函数
例如
lhs.date_ < rhs.date_ ||
lhs.date_ == rhs.date_ && lhs.time_ < rhs.time_ ||
lhs.date_ == rhs.date_ && lhs.time_ == rhs.time_ && lhs.id_ < rhs.id_ .....
这真的让我很生气。
所以我开始避免写以下内容:
std::make_tuple( lhs.date_, lhs.time_, lhs.id_ ) <
std::make_tuple(rhs.date_, rhs.time_, rhs.id_ );
我几乎很高兴,但请注意,我可能不是出于目的使用元组让我担心。
你能批评这个解决方案吗?
或者这是一个好习惯?
你如何避免这样的比较?
更新:
感谢您指向 std::tie 以避免复制对象。
并感谢您指出重复的问题
【问题讨论】:
-
std::make_tuple复制您传递给它的对象(除非您使用std::ref或std::cref)——要比较现有对象而不复制,请使用@ 987654327@ 或std::tie而不是std::make_tuple。 -
如果你使用 std::tie 代替这是一个很好的做法,它使 operator