• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:STLのvectorの削除)

STLのvectorの削除方法について

このQ&Aのポイント
  • vectorの要素をeraseで削除する方法について質問です。
  • コードを簡略化しましたが、サイズに関わらず最後の要素が削除されてしまいます。
  • erase時点でのイテレータは削除したい要素を指しているのに、なぜ最後の要素が削除されるのか分かりません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.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

scanfprintf
質問者

お礼

度々迅速なご回答感謝します。 使用方法は間違っていないということですね。 今回作成しているクラスがだいぶ複雑なので、 コピーコンストラクタや「=」のオーバーロードで最後の要素が 削除されているように錯覚してしまっているのかもしれません。 vectorのeraseの中でも実際に「=」のオーバーロードが 呼び出されていましたので、そのあたりの問題かもしれません。

関連するQ&A

専門家に質問してみよう