如果我想通过UDT中的两种变量类型之一对向量进行排序,标准库sort能否完成此操作,还是我需要编写自己的排序函数。
例如,如果您有以下内容
struct MyType{
int a;
int b;
};
vector<MyType> moo;
// do stuff that pushes data back into moo
sort(moo.begin(), moo.end()) // but sort it by lowest to highest for a, not b
那么使用标准库的 sort 函数是否可以实现这个功能呢?谢谢。
std::less
。这样,您就不必每次传递函数对象(例如,因为确实有一个合理的定义),但是您的类型不会获得operator <
。 - Pavel Minaevoperator<
不是const
。这意味着它不能用于将比较左侧视为常量的代码。(顺便说一句,我经常看到这种错误,这就足以切换到使这些运算符成为全局的原因之一。这样做的人犯错更少。当然,还有其他原因。) - sbi