gpt4 book ai didi

c++ - 虚拟方法作为 Comp 函数进行排序

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

我是 C++ 的新手,我正在尝试使用 std::sort 函数对解决方案的 vector 进行排序。

代码是这样的(解决方案列表是一个* vector ):

void SolutionSet::sort(Comparator &comparator) {

std::sort(solutionsList_->begin(), solutionsList_->end(), &comparator::compare);

}

comparator 参数是 Comparator 的子类实例,compare 方法在 Comparator 类中是虚拟的,由 Comparator 的所有子类实现。

我想将该函数用作 std:sort() 中的比较器函数。

这可能吗?

如果是,有人能告诉我怎么做吗?因为使用前面的代码,它不起作用。

如果我没说清楚,请问!

谢谢大家!

最佳答案

STL 仿函数必须是单态的,因为 STL 仿函数是按值传递的。

如果您需要多态行为,您需要将该功能包装在一个单态类中:

struct MonomorphicWrapper : std::binary_function<Solution, Solution, bool>
{
bool operator()(const Solution& lhs, const Solution& rhs)
{
return lhs.compare(rhs);
}
};

关于c++ - 虚拟方法作为 Comp 函数进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2714489/

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