您有两种使用std::sort
. operator <
一种是为您的班级重载:
bool operator< (const Card &lhs, const Card &rhs) {
return lhs.value < rhs.value;
}
但是,只有在总是比较这样的对象确实有意义时才这样做Card
。如果您只需要它进行特定排序,则可以使用sort
接受自定义比较器的版本。
有多种方法可以定义谓词。对于可重用但简单的标准,可以使用类中的静态函数:
class Card
{
public:
// ... as before
static bool lesserValue(const Card &lhs, const Card &rhs) {
return lhs.value < rhs.value;
}
};
用法:
std::sort(from, to, &Card::lesserValue);
对于一次性事物(或需要保留内部状态的复杂标准),使用派生自的类std::binary_function
并在其operator()
. 在 C++11 中,您还可以为此使用 lambda 函数:
std::sort(from, to, [](const Card &lhs, const Card &rhs) { return lhs.value < rhs.value; });