2. 小于(a < b):a->age_ == 1 && b->age_ != 1;
class Compare {
public:
bool operator() (Character* ca, Character* cb) {
if (ca->age_ == 1 && cb->age_ == 1 ||
ca->age_ != 1 && cb->age_ != 1) return false;
return ca->age_ == 1;
}
};
完整的测试代码:
class Character {
public:
Character(int n, string s) : age_(n), name_(s) {}
int age_;
string name_;
};
class Compare {
public:
bool operator() (Character* ca, Character* cb) {
if (ca->age_ == 1 && cb->age_ == 1 ||
ca->age_ != 1 && cb->age_ != 1) return false;
return ca->age_ == 1;
}
};
int main() {
vector<Character*> vc{ new Character(1, "sasaki"), new Character(2, "nozomi"), new Character(1, "satchel"), new Character(6, "qingtian") };
sort(vc.begin(), vc.end(), Compare());
for (int i = 0; i < vc.size(); ++i) {
printf("%s ", vc[i]->name_.c_str());
}
return 0;
}// output: sasaki satchel nozomi qingtian
Reference:
1. std::sort
2. comparator
3. strict weak order
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对ASPKU的支持。
注:相关教程知识阅读请移步到C++教程频道。










