【初心者歓迎】C/C++室 Ver.22【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0744デフォルトの名無しさん
2005/11/03(木) 17:18:32STL の deque から、ある条件を満たす要素を全て削除する良い方法はないでしょうか。
// イテレータを使った場合
deque<CHoge> que;
deque<CHoge>::iterator itr;
for(itr=que.begin(); itr!=que.end(); i++) {
if ( /* 好きな条件 */ )
que.erase(i);
}
こうすると、erase した時点で i の指すものが不定になり、
i++ が上手く動作しません。
// operator[]() を使った場合
deque<CHoge> que;
for(int i=0; i<que.size(); i++) {
if ( /* 好きな条件 */ ) {
deque<CHoge>::iterator itr == ( /* i 番目の要素のイテレータ */ )
que.erase(i); //
}
}
operator[] を使ってループを整数でまわそうにも、
n 番目の要素のイテレータを返す操作が見つからず、うまくいきません。
よろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています