我如何按字母顺序排序,然后按类中的int
变量排序?我如何组合它们,所以如果counter
相同,它将按字母顺序返回?
// sort pages by its popularity
bool popularity(const Page &a, const Page &b) {
return a.counter > b.counter;
}
// alphabetical sort
bool alphaSort(const Page &a, const Page &b) {
return a.name < b.name;
}
// Combination?
sort(.begin(), .end(), ??)
答案 0 :(得分:5)
将您的两个条件扩展为lexicographic comparison:
bool combinedSort(const Page &a, const Page &b)
{
return a.counter > b.counter || (a.counter == b.counter && a.name < b.name);
}
答案 1 :(得分:1)
使用上面的组合排序功能(首先按字母顺序修改排序,稍后修改字符串。),你可以调用类似这样的排序:
假设你有一个页面向量
bool combinedSort(const Page &a, const Page &b)
{
return a.name < b.name || (a.name == b.name && a.counter < b.counter);
}
std::vector<Page> pages;
std::sort(pages.begin(), pages.end(), combinedSort);