STL按变量排序,然后按升序排序

时间:2014-11-17 16:30:41

标签: c++ sorting stl

我如何按字母顺序排序,然后按类中的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(), ??)

2 个答案:

答案 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);