【发布时间】:2013-05-02 15:05:26
【问题描述】:
我正在尝试实现/使用比较器样式接口,就像您在 Java 中找到的那样,它允许我将通用比较器类型传递给函数并使用它对数据集进行排序。
这是因为我需要各种不同的比较函数,并且我希望能够将我需要的一个传递给排序函数。
这是我目前所拥有的代码 sn-p,希望你能明白我的意思:
void Population::sort(const std::shared_ptr<Comparator<Solution>>& comparator)
{
std::sort(data.begin(), data.end(), comparator.get());
}
以及我尝试实现的比较器接口
template <typename T> class Comparator : public std::binary_function<T,T,bool>
{
public:
virtual ~Comparator ();
virtual bool operator() ( const T &o1, const T &o2 ) = 0;
};
这可能很明显我做错了,因为我不太了解 C++。
干杯!
【问题讨论】:
-
我认为你在设计这个。比较器中的虚方法,您很可能可以在调用方的仿函数实例中使用
std::reference_wrapper。
标签: c++ templates sorting vector comparator