【初心者】スレを立てる前にココで質問を【Part27】 [転載禁止]©5ch.net
■ このスレッドは過去ログ倉庫に格納されています
0048名前は開発中のものです。
2015/01/13(火) 18:05:43.74ID:zcAKajvMstd::vectorコンテナのリバースイテレータについてなのですが、
コンテナの内部をerase()で削除したいのですが、通常のイテレータと同じように行なえません。
std::vector<MyClass*> containerが宣言されてるとして、
for (std::vector<MyClass*>::reverse_iterator it = container.rbegin(); it != container.rend(); ++it){
container.erase(it);
}
上記のように行なうと、
エラー 1 error C2664: 'std::_Vector_iterator<std::_Vector_val<std::_Simple_types<MyClass*>>>
std::vector<MyClass*,std::allocator<_Ty>>::erase(std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<MyClass*>>>,
std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<MyClass*>>>)' : 引数 1 を 'GameObject *' から
'std::_Vector_const_iterator<std::_Vector_val<std::_Simple_types<MyClass*>>>'
へ変換できません。
とエラーになります。
for (std::vector<MyClass*>::reverse_iterator it = container.rbegin(); it != container.rend(); ++it) ここを
for (std::vector<MyClass*>::iterator it = container.begin(); it != container.end(); ++it)
こうするとエラーは出なくなりますが、想定している動きになりません。
解決方法をご指導お願いします。
■ このスレッドは過去ログ倉庫に格納されています