私はマップ上で異なる操作のためにwriittenプログラムを持っています。マップ消去エラー
私のプログラムのサンプルコードは以下の通りです。
このコードを実行しているうちに、マップの範囲外の例外のようなエラーが発生しています。
私はこれを解決するのを手伝ってください。
int main()
{
using namespace std;
map <int, int> m1;
map <int, int> :: iterator m1_Iter;
map <int, int> :: const_iterator m1_cIter;
typedef pair <int, int> Int_Pair;
m1.insert (Int_Pair (1, 10));
m1.insert (Int_Pair (2, 20));
m1.insert (Int_Pair (3, 30));
m1_cIter = m1.end();
m1_cIter--;
cout << "The value of the last element of m1 is:\n"
<< m1_cIter -> second << endl;
m1_Iter = m1.end();
m1_Iter--;
m1.erase (m1_Iter);
m1_cIter = m1.begin();
m1_cIter--;
m1.erase (m1_cIter);
m1_cIter = m1.end();
m1_cIter--;
cout << "The value of the last element of m1 is now:\n"
<< m1_cIter -> second << endl;
getchar();
}
問題をトレースするのに役立つコードにデバッグ用の 'cout'を追加してください。私たちは通常あなたのためにコードをデバッグしません。問題を特定し、質問します。 –
この部分に実行時エラーが発生しました。 m1_cIter = m1.begin(); m1_cIter--; m1.erase(m1_cIter); –
http://stackoverflow.com/questions/4885318/calling-erase-with-iterator-vs-const-iterator –