我有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'来帮助追查您的问题。我们通常不会为您调试您的代码。找出问题,然后提出问题。 – 2012-03-15 12:01:42
我在这部分得到运行时错误 m1_cIter = m1.begin(); m1_cIter--; m1.erase(m1_cIter); – 2012-03-15 12:07:10
http://stackoverflow.com/questions/4885318/calling-erase-with-iterator-vs-const-iterator – 2012-03-15 12:34:09