我有一个 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;
}
关于c++ std::sort 按属性对对象 vector 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29738758/