有三种方法可以使用std::sort
.
operator<
在MyClass
类中实现一个函数.sort
两个const &MyClass
引用参数,并bool
true
在第一个对象小于第二个时返回.operator()
)传递给sort
; 与独立功能一样,operator()
应该取两个const &MyClass
参数并返回一个bool
.由于对象可以具有内部状态,因此您可以使用它来动态确定要排序的字段,例如,排序应该是升序还是降序.第一种选择:
bool MyClass::operator<(const MyClass &rhs)
{
return a < rhs.a;
}
std::sort(vec.begin(), vec.end());
Run Code Online (Sandbox Code Playgroud)
第二种选择:
bool CompareMyClass(const MyClass &lhs, const MyClass &rhs)
{
return lhs.a < rhs.a; // this function will need to be declared friend if a is private
}
std::sort(vec.begin(), vec.end(), CompareMyClass);
Run Code Online (Sandbox Code Playgroud)
第三种选择:
struct MyFunctor
{
bool operator()(const MyClass &lhs, const MyClass &rhs) const
{
return lhs.a < rhs.a;
}
};
std::sort(vec.begin(), vec.end(), MyFunctor());
Run Code Online (Sandbox Code Playgroud)