我正在尝试实现/使用比较器样式接口,就像您在 Java 中找到的那样,它允许我将通用比较器类型传递给函数并使用它对数据集进行排序。
这是因为我需要各种不同的比较函数,并且我希望能够将我需要的比较函数传递给排序函数。
这是我到目前为止的代码片段,希望您能说出我的意思:
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++。
干杯!