c++ std::sort 按属性对对象 vector 进行排序

标签 c++ sorting

我有一个 finalwords 类型的对象。 其中,两个 bool 变量,

bool isPopular;
bool isFirstSearch;

我正在尝试根据这些属性对 finalwords vector 进行排序,但在涉及多个属性时遇到问题。

我想要一个按以下顺序排序的列表:

isPopular=true, isFirstSearch = true
isPopular=true, isFirstSearch = false
isPopular=false, isFirstSearch = true
isPopular=false, isFirstSearch = false

换句话说,

popular(1) 和 firstsearch(1) 第一,

紧随其后的是 popular(1) 和 firstsearch(0),

紧随其后的是 popular(0) 和 firstsearch(1),

最后是 popular(0) 和 firstsearch(0)

void sortResults (vector <finalwords> &finalSuggestions)
{
  sort (finalSuggestions.begin(), finalSuggestions.end(), [] (finalwords x, finalwords y)
  {
    return ((x.isFirstSearch > y.isFirstSearch) && (x.isPopular > y.isPopular)) ;
  });
}

我知道它不完整,但即便如此,我在 vector 的中间/末尾也有流行词和优先搜索词。我在比较中向后工作以获得所需的 vector 顺序时遇到问题

最佳答案

试试这个:

[] (const finalwords& x, const finalwords& y)
{
    if (x.isPopular != y.isPopular) return x.isPopular;
    else if (x.isFirstSearch != y.isFirstSearch) return x.isFirstSearch;
    else return false;
}

DEMO

关于c++ std::sort 按属性对对象 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738758/

相关文章:

ios - 如何使用2个键对数组进行排序

javascript - 根据另一个数组中的值对数组进行排序 - Javascript

python - 从文件中读取 float 并排序到屏幕

c++ - 重载的输入运算符未通过自动简单输入测试

c++ - 在类模板中如何检测模板参数是否为枚举类型?

C++:在新基础上生成组合

c++ - 为什么发布版本 memset 比 visual studio 2012 中的调试版本慢?

C++ - 为包含字符串的类移动构造函数

Python 排序函数不执行任何操作

java - groupingBy 后排序列表