Std::sort 这个函数,大家知道用,而且入可以 使用一个自定义的元素对比函数。
比较郁闷的是,老是忘了 这个函数返回TRUE,对排序结果的影响(升序还是降序)
于是用GTEST写了一段代码(测试代码,将就些看吧)
class HandHogRecord
{
public:
explicitHandHogRecord(chips_type bet):bet_(bet) {}
chips_type bet_;
};
boolOrderByBet(const HandHogRecord & left , const HandHogRecord & right)
{
// 结果为降序
returnleft.bet_ > right.bet_;
}
TEST(BRStyle, sort_)
{
std::vector<HandHogRecord> records;
records.push_back(HandHogRecord(1000) );
records.push_back(HandHogRecord(200) );
records.push_back(HandHogRecord(100) );
records.push_back(HandHogRecord(230) );
std::sort(records.begin(), records.end(), OrderByBet);
ASSERT_GE(records.at(0).bet_,records.at(1).bet_);
ASSERT_GE(records.at(1).bet_,records.at(2).bet_);
ASSERT_GE(records.at(2).bet_,records.at(3).bet_);
}
如果 left 大于 right 返回TRUE,则排序的结果为降序。。。返回FALSE,排序结果为我不说,大家都知道了吧。。。