我是 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/