- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:STLのvectorの削除)
STLのvectorの削除方法について
このQ&Aのポイント
- vectorの要素をeraseで削除する方法について質問です。
- コードを簡略化しましたが、サイズに関わらず最後の要素が削除されてしまいます。
- erase時点でのイテレータは削除したい要素を指しているのに、なぜ最後の要素が削除されるのか分かりません。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
> なぜ最後の要素が削除されてしまうのでしょうか。 再現できません。 #include <iostream> #include <vector> #include <algorithm> using namespace std; int main() { vector<int> obj; vector<int>::iterator it; obj.push_back(1); obj.push_back(2); obj.push_back(3); it = obj.begin(); it = obj.erase(it); cout << obj[0] << ' ' << obj[1] << endl; } 実行結果: 2 3
お礼
度々迅速なご回答感謝します。 使用方法は間違っていないということですね。 今回作成しているクラスがだいぶ複雑なので、 コピーコンストラクタや「=」のオーバーロードで最後の要素が 削除されているように錯覚してしまっているのかもしれません。 vectorのeraseの中でも実際に「=」のオーバーロードが 呼び出されていましたので、そのあたりの問題かもしれません。