我有一个令牌类,参数如下-
private:
string theText{};
vector<size_t> theLineNumbers{};
size_t theFrequency{ 1 };现在我有了另一个Tokenizer类,它包含token类的对象列表
private:
list <Token> theTokenList;现在,我想实现根据频率对对象列表进行排序的函数。我已经写了下面的代码,但它不能工作。
void Tokenizer::sortOnFrequecy()const
{
forward_list<Token> myflist(theTokenList.cbegin(), theTokenList.cend());
/*forward_list <Token>::const_iterator it = myflist.cbegin();*/
sort(myflist.cbegin(), myflist.cend(),compareFrequency());
}
bool Tokenizer::compareFrequency(const Token& t1, const Token& t2)
{
return (t1.getFrequency() < t2.getFrequency());
}我想打印令牌列表,按照频率从高到低排序。
请帮我解决这个问题。如果需要任何其他代码,那么我非常乐意提供相同的代码。
发布于 2021-07-03 01:53:53
看看这个:
https://www.cplusplus.com/reference/list/list/sort/
您可以将compareFrequency设置为静态,也可以将其完全移出对象。此外,您在没有任何参数的情况下调用此比较,这没有任何意义。
使compareFrequency成为在对象外部声明的普通函数,对列表进行排序将只是
myflist.sort(compareFrequency);https://stackoverflow.com/questions/68228800
复制相似问题