我想知道是否有一种方法可以根据第二个元素对我的对列表进行排序。这是一个代码:
list<pair<string, unsigned int>> words;
words.push_back(make_pair("aba", 23);
words.push_back(make_pair("ab", 20);
words.push_back(make_pair("aBa", 15);
words.push_back(make_pair("acC", 8);
words.push_back(make_pair("aaa", 23);
我想按整数元素对我的列表单词进行降序排序,以便我的列表像:
<"aba", 23>,<"aaa", 23>,<"ab", 20>,<"aBa", 15>,<"acC", 8>
此外,是否可以通过第一个元素和第二个元素对它们进行排序,从而使其首先按第二个元素(按整数值)进行排序,然后如果存在两个或更多对具有相同第二个元素(即相同的整数值) ),那么它将根据字母顺序中的第一个元素对它们进行排序,然后我上面的排序列表中的前2对将交换,所以:
<"aaa", 23>,<"aba", 23>,<"ab", 20>,<"aBa", 15>,<"acC", 8>
如果这不能用列表来完成,可以用向量来完成吗?提前谢谢〜
这将完成工作:
std::sort(words.begin(), words.end(), [](const std::pair<string, unsigned int> &x,
const std::pair<string, unsigned int> &y)
{
return x.second > y.second;
});
[看一下http://www.cplusplus.com/reference/algorithm/sort/ sort
函数:它将比较器作为第三个参数:您可以在其中定义所需的任何排序逻辑。