首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过将另一个函数作为参数传递来实现正向列表排序方法

通过将另一个函数作为参数传递来实现正向列表排序方法
EN

Stack Overflow用户
提问于 2021-07-03 00:48:26
回答 1查看 31关注 0票数 1

我有一个令牌类,参数如下-

代码语言:javascript
复制
private:
    string theText{};
    vector<size_t> theLineNumbers{};
    size_t theFrequency{ 1 };

现在我有了另一个Tokenizer类,它包含token类的对象列表

代码语言:javascript
复制
private:
list <Token> theTokenList;

现在,我想实现根据频率对对象列表进行排序的函数。我已经写了下面的代码,但它不能工作。

代码语言:javascript
复制
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());
}

我想打印令牌列表,按照频率从高到低排序。

请帮我解决这个问题。如果需要任何其他代码,那么我非常乐意提供相同的代码。

EN

回答 1

Stack Overflow用户

发布于 2021-07-03 01:53:53

看看这个:

https://www.cplusplus.com/reference/list/list/sort/

您可以将compareFrequency设置为静态,也可以将其完全移出对象。此外,您在没有任何参数的情况下调用此比较,这没有任何意义。

使compareFrequency成为在对象外部声明的普通函数,对列表进行排序将只是

代码语言:javascript
复制
myflist.sort(compareFrequency);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68228800

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档