私は、特定の型の要素に対してのみ反復処理を行うことができるC++の反復子が必要です。次の例では、SubTypeインスタンスの要素に対してのみ反復処理を行います。C++の派生型と一致する要素のイテレータを作成する方法は?
vector<Type*> the_vector;
the_vector.push_back(new Type(1));
the_vector.push_back(new SubType(2)); //SubType derives from Type
the_vector.push_back(new Type(3));
the_vector.push_back(new SubType(4));
vector<Type*>::iterator the_iterator; //***This line needs to change***
the_iterator = the_vector.begin();
while(the_iterator != the_vector.end()) {
SubType* item = (SubType*)*the_iterator;
//only SubType(2) and SubType(4) should be in this loop.
++the_iterator;
}
C++でこのイテレータを作成するにはどうすればよいですか?
SubTypeオブジェクト以外をスキップする独自のイテレータ(またはサブクラス)を作成することはできませんか? –