困惑尝试编写通用助手类

时间:2014-07-23 14:58:41

标签: algorithm generics c++11

我正在尝试编写一个可以使用任何类型的整数容器的辅助类。具体来说,我的类会根据某些标准查找容器值。为了使用不同类型的容器,我的类显然不需要在容器本身上操作,而是在容器迭代器上操作。我很困惑如何正确定义和使用这个类。

   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, ...)
    }

实现是这样的,只有类构造函数需要获得开始/结束迭代器对。我的问题是:

  1. 我是否必须模拟整个类,或者我可以只构建构造函数吗?
  2. 实例化类的正确方法是什么?编译器不喜欢

    MyLookUp&LT;的std ::矢量&lt; INT&GT; ::迭代&GT; lookup(foo.begin(),foo.end(),...)

  3. ANOTHER ONE

    取代了这个问题

1 个答案:

答案 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(), ...)