我想将自己的比较器用于std::set,它需要将一个参数传递给其构造函数:

template <class T = double> class EpsCompare {
  public:
    EpsCompare(T input_eps) : _eps(input_eps) {};
    bool operator() (const T & element1, const T & element2) const {
       return ( round(element1*_eps) < round(element2*_eps) );
    }
    T _eps;
};

如何将其传递给设置数据类型的声明?我想做这样的事情:
std::set<double, EpsCompare<double>(1e-5)> myEpsSet;

这不会编译,那么还可以怎么做?

最佳答案

std::set<double, EpsCompare<> > myEpsSet(EpsCompare<>(1e-5));

要么
std::set<double, EpsCompare<double> > myEpsSet(EpsCompare<double>(1e-5));

08-17 08:32