よしで、クラスのテンプレートメソッドを作成するので、私たちは、私はまた、コンテナ上で動作する方法でクラスに取り組んでいる、と私は」はSTLスタイル
std::fill(boolContainer.begin(), boolContainer.end(), false);
のようなSTLの関数を知っています私はちょうど同様に非テンプレートバージョン上記の例のようにそれをテンプレートかもしれないことに気づきましすることは、このようなものです:
class SomeClass {
public:
// ...
int containerMethod(std::vector<int> &v);
// ...
private:
// ...
};
そして私はにそれを変更することを目指しています:
class SomeClass {
public:
// ...
template <class InputIterator>
int containerMethod(const InputIterator &begin, const InputIterator &end);
// ...
private:
// ...
};
しかし、私は実装の詳細を働いてトラブルを抱えている:
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;
}
そこで問題は、メソッドのテンプレートパラメータに基づいて、1が正しくテンプレートイテレータをインスタンス化しない方法ですか?私は入力イテレータしか必要ないことに注意してください。
どのように動作しないのですか?コンパイラエラー、クラッシュ、その他何か? – jrok
[私のための作品](http://ideone.com/NSL6T)。 –
標準ライブラリでは、イテレータは通常非常に軽量なオブジェクトであるため、イテレータを渡すのが一般的です(この例では 'begin'で行うように)。 –