#include "stdafx.h"
int _tmain(int argc, _TCHAR* argv[])
{
string s = "Haven't got an idea why.";
auto beg = s.begin();
auto end = s.end();
while (beg < end)
{
cout << *beg << '\n';
if (*beg == 'a')
{//whithout if construct it works perfectly
beg = s.erase(beg);
}
++beg;
}
return 0;
}
爲什麼如果我從這個字符串中刪除一個或多個字符,這段代碼會中斷?我認爲這與返回的迭代器有關,在高於終止迭代器的地址創建擦除操作後,但我不確定,它肯定是不正確的行爲。或者是?奇怪的迭代器行爲
由於'begin()'在擦除字符時不會改變,所以將字符從'end()'擦除到'begin()'可能更容易。 – MSalters 2010-06-16 10:45:27