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

bool isPopular;
bool isFirstSearch;

我试图根据这些属性对最终词 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),

最后流行(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 的中间/结尾仍然有一个流行的&firstsearch词。我在向后进行比较以获取 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++ - C++ std::sort按属性对对象进行排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29738758/

10-10 21:15