您有兩種使用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()
中實現comaprison邏輯。在C++ 11,你還可以使用lambda函數這個:
std::sort(from, to, [](const Card &lhs, const Card &rhs) { return lhs.value < rhs.value; });
看看這裏:http://www.cplusplus.com/reference/algorithm/sort/ – 2013-02-19 15:32:17