我正在尝试编写一个可以使用任何类型的整数容器的辅助类。具体来说,我的类会根据某些标准查找容器值。为了使用不同类型的容器,我的类显然不需要在容器本身上操作,而是在容器迭代器上操作。我很困惑如何正确定义和使用这个类。
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&LT;的std ::矢量&lt; INT&GT; ::迭代&GT; lookup(foo.begin(),foo.end(),...)
答案 0 :(得分:1)
For 1. Templating只是构造函数没问题,副作用很好:你不需要指定模板参数,因为它们会被检测到。
For 2.如果坚持模板化课程,那么
中存在一个小问题MyLookUp< std::vector::iterator> lookup(foo.begin(), foo.end(), ...)
std::vector
不是类型,而是模板。你需要说例如。
MyLookUp< std::vector<int>::iterator> lookup(foo.begin(), foo.end(), ...)