我试图编写一个helper类来处理任何类型的整数容器具体来说,我的类将根据一些条件查找容器值。为了使用不同类型的容器,我的类显然不需要对容器本身进行操作,而需要对容器迭代器进行操作。我很困惑如何正确定义和使用这个类。

   template<class ForwardIt>    // Do I have to template entire class?
    class MyLookup {
       public:
       template<class ForwardIt>   // Or may I just template the constructor
       MyLookup(ForwardIt begin, ForwardIt end, ...)
    }

实现是这样的,只有类构造函数需要获得开始/结束迭代器对我的问题是:
我需要模板化整个类还是我可以模板化构造函数?
实例化类的正确方法是什么?编译器不喜欢
mylookup::迭代器>查找(foo.begin(),foo.end(),…)
这个问题被ANOTHER ONE

最佳答案

为1。只对构造函数进行模板化是可以的,并且有很好的副作用:您不需要指定模板参数,因为它们将被检测到。
2个如果你坚持模板化这个类,你在

MyLookUp< std::vector::iterator> lookup(foo.begin(), foo.end(), ...)

std::vector不是类型,而是模板你得说。
MyLookUp< std::vector<int>::iterator> lookup(foo.begin(), foo.end(), ...)

关于algorithm - 试图编写泛型帮助器类感到困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24913998/

10-12 23:59