假设我有一对 std::pair<int, int>
秒。我希望每次比较它们时都发出一个单独的代码来表示相等性、较小和较大(例如,分别为 0、-1 和 1)。
天真的方法是写一些 if
- else
代码:
int compare_int_pairs(std::pair<int, int> const &p1_, std::pair<int, int> const &p2_) {
if(p1_.first < p2_.first) {
return -1;
} else if(p1_.first > p2_.first) {
return 1;
} else {
if(p1_.second < p2_.second) {
return -1;
} else if(p1_.second > p2_.second) {
return 1;
} else {
return 0;
}
}
return 0;
}
但是是否有更好、更有效的方法来执行此操作(例如,按位运算或其他方法)?
最佳答案
std::pair
已经通过标准运算符公开了字典顺序,因此您可以直接使用它们:
int compare_int_pairs(std::pair<int, int> const &p1_, std::pair<int, int> const &p2_) {
if (p1_ < p2_) return -1;
if (p1_ > p2_) return 1;
return 0;
}
如果您确实需要,可以使用条件表达式来简洁。
关于c++ - 分别比较对的相等性、更小和更大。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33011898/