c++ - 根据多个条件对结构进行排序?

标签 c++ sorting lambda

<分区>

基本上,我正在尝试对 struct Entry 的 vector 进行排序(每个 Entry 都有一个 string word 和一个 int count) 通过 int 的值。我设法通过内联 lambda 表达式做到了这一点:

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 具有相同的 count,我需要按字母顺序对它们进行排序。是否可以在其中某处使用另一个 lambda 表达式,或者是否有其他方法可以做到这一点?谢谢!

最佳答案

解决方案非常简单:

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;
 });

关于c++ - 根据多个条件对结构进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30115620/

相关文章:

c++ - 有没有办法获取我发送给 C++ 中的对等方的 OpenSSL X509 证书名称?

Python Sorted() 跳过具有空列的行

lambda - 在 Kotlin 中将比较器转换为 lambda

c++ - 在 vector 中使用没有拷贝且没有 noexcept move 构造函数的对象。到底是什么坏了,我该如何确认?

c++ - 为什么空数组的大小为 0 而空类的大小不为 0?

c - 如何对字符进行排序**?

c - 如何删除一个元素来对数组进行排序

java - 具有不带大括号的多个语句的 Lambda 表达式的行为

c++ - 将带有 unique_ptr 的可变 lambda 传递给 const& std::function

c++ - 取消 DeferWindowPos