我有一个类型为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/