以STL样式创建类的模板化方法

rwo*_*ols 0 c++ stl

好吧,所以我们知道STL中的功能就像

std::fill(boolContainer.begin(), boolContainer.end(), false);
Run Code Online (Sandbox Code Playgroud)

我正在使用一个也适用于容器的方法开发一个类,我意识到我也可以像上面的例子那样模板化.非模板化的版本是这样的:

class SomeClass {
public:
    // ...
    int containerMethod(std::vector<int> &v);
    // ...  
private:
    // ...
};
Run Code Online (Sandbox Code Playgroud)

我的目标是将其改为:

class SomeClass {
public:
    // ...
    template <class InputIterator>
    int containerMethod(const InputIterator &begin, const InputIterator &end);
    // ...  
private:
    // ...
};
Run Code Online (Sandbox Code Playgroud)

但是我在解决实施的细节方面遇到了麻烦:

template <class Iter> int SomeClass::containerMethod
(const Iter &begin, const Iter&end) {
    // Here I need to instantiate an iterator for the container.
    Iter iter;
    for (iter = begin; iter != end; ++iter) {
        // This does not seem to work.
    }
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

那么问题是如何根据方法的模板化参数正确实例化模板化迭代器?请注意,我只需要一个输入迭代器.

Rob*_*obᵩ 5

你的测试用例不完整,所以我必须咨询我的水晶球.

您已将模板定义放在源代码文件中,它应该位于头文件中.

请参阅:为什么模板只能在头文件中实现?