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

C++ 以STL样式创建类的模板化方法,c++,stl,C++,Stl,好的,我们知道STL中的函数,比如 std::fill(boolContainer.begin(), boolContainer.end(), false); 我正在使用一个方法处理一个类,该方法也适用于一个容器,我意识到我也可以像上面的示例中那样对它进行模板化。非模板化版本如下: class SomeClass { public: // ... int containerMethod(std::vector<int> &v); // ... p

好的,我们知道STL中的函数,比如

std::fill(boolContainer.begin(), boolContainer.end(), false);
我正在使用一个方法处理一个类,该方法也适用于一个容器,我意识到我也可以像上面的示例中那样对它进行模板化。非模板化版本如下:

class SomeClass {
public:
    // ...
    int containerMethod(std::vector<int> &v);
    // ...  
private:
    // ...
};
class-SomeClass{
公众:
// ...
int containerMethod(标准::向量&v);
// ...  
私人:
// ...
};
我的目标是把它变成:

class SomeClass {
public:
    // ...
    template <class InputIterator>
    int containerMethod(const InputIterator &begin, const InputIterator &end);
    // ...  
private:
    // ...
};
class-SomeClass{
公众:
// ...
模板
int container方法(const-inputierator&begin、const-inputierator&end);
// ...  
私人:
// ...
};
但是,我在制定实施细节时遇到了困难:

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;
}
template int SomeClass::containerMethod
(施工和开始、施工和结束){
//这里我需要为容器实例化一个迭代器。
国际热核实验堆;
for(iter=begin;iter!=end;++iter){
//这似乎不起作用。
}
返回0;
}

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

您的测试用例不完整,因此我必须咨询我的crystal ball

您已将模板定义放在源代码文件中,而它本应放在头文件中


请参阅:

您的测试用例不完整,因此我必须咨询我的水晶球

您已将模板定义放在源代码文件中,而它本应放在头文件中


请参阅:

它是如何工作的?编译器错误、崩溃等?在标准库中,按值传递迭代器也是很常见的,因为迭代器通常是非常轻量级的对象,并且您通常需要它们的副本(在本例中,您使用
begin
)。我们似乎每隔2-3天就会遇到这个问题,如果每次我都有一英镑的话…@DavidBrown你说得对,真知灼见。怎么不起作用?编译器错误、崩溃等?在标准库中,按值传递迭代器也是很常见的,因为迭代器通常是非常轻量级的对象,并且您通常需要它们的副本(在本例中,您使用
begin
)。我们似乎每隔2-3天就会遇到这个问题,如果每次我都有一磅钱的话…@DavidBrown你说得对,真知灼见。好吧,现在我觉得自己很愚蠢。。。这就是问题所在。谢谢。我在哪里能找到像你这样的水晶球?最近它非常准确。嗯,现在我觉得自己很愚蠢。。。这就是问题所在。谢谢。我在哪里能找到像你这样的水晶球?最近它非常准确。