根据多种条件对结构进行排序?

时间:2015-05-08 04:12:34

标签: c++ sorting lambda

基本上,我正在尝试按{{1}的值对struct Entry(每个Entrystring wordint count)的向量进行排序}}秒。我设法通过内联lambda表达式来实现:

int

但是,我现在遇到的问题是,如果两个或多个vector<Entry*> entries(old); //make copy of old vector std::stable_sort(entries.begin(), entries.end(), [] (const Entry *lhs, const Entry *rhs){ return (lhs->count > rhs->count); }); 具有相同的Entry,我需要按字母顺序对它们进行排序。可以在那里的某个地方使用另一个lambda表达式,还是有另一种方法可以做到这一点?谢谢!

1 个答案:

答案 0 :(得分:2)

解决方案非常简单:

std::stable_sort(entries.begin(), entries.end(),
 [] (const Entry *lhs,   const Entry *rhs)
 {
    if( lhs->count != rhs->count )
        return lhs->count > rhs->count;
    else
        return lhs->word > rhs->word;
 });