gpt4 book ai didi

c++ - 用于排序的比较器

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:37:33 26 4
gpt4 key购买 nike

我在看 http://www.cplusplus.com/reference/algorithm/sort/并想实现类似的东西:我定义了一个函数 clauseComparator ,它类似于提供的链接中示例中给出的 myfunc

bool QueryEvaluatorPrivate::clauseComparator(QueryClause cl1, QueryClause cl2) {
int priority1 = clausePriority(cl1),
priority2 = clausePriority(cl2);
return priority1 < priority2;
}

我是这样用的:

sort(clauses.begin(), clauses.end(), clauseComparator);

但是 VS 提示:

Error   4   error C3867: 'QueryEvaluatorPrivate::clauseComparator': function call missing argument list; use '&QueryEvaluatorPrivate::clauseComparator' to create a pointer to member   h:\dropbox\sch\cs3202\code\source\query\query evaluator\queryevaluator.cpp  138
Error 5 error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided h:\dropbox\sch\cs3202\code\source\query\query evaluator\queryevaluator.cpp 138

首先出了什么问题(缺少 arg 列表)?我尝试按照错误中给出的建议添加 & 并以

结束
Error   4   error C2276: '&' : illegal operation on bound member function expression    h:\dropbox\sch\cs3202\code\source\query\query evaluator\queryevaluator.cpp  138
Error 5 error C2780: 'void std::sort(_RanIt,_RanIt)' : expects 2 arguments - 3 provided h:\dropbox\sch\cs3202\code\source\query\query evaluator\queryevaluator.cpp 138

这里有什么问题吗?在我的理解中,它应该传递一个函数指针,我理解它也应该被 sort 接受?

最佳答案

您需要将您的成员函数设为静态,以便sort 可以访问它。在您的类标题中,请这样声明:

static bool QueryEvaluatorPrivate::clauseComparator(const QueryClause & cl1, const QueryClause & cl2);

不需要使用 bind,因为您的比较器很可能(或不应该)需要访问类成员。

关于c++ - 用于排序的比较器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15385453/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com