因此,遍歷字符串並使用operator[]
或insert來更改字符會使迭代器失效。將字符移動到字符串無效迭代器中嗎?
這樣的迭代也是這種情況嗎?
std::string str = "ABCD";
for(auto&& c : str){
for(int i = 0; i < 3; ++i){
switch(c) {
case 'A':
c = 'B';
break;
case 'B':
c = 'C';
break;
/*...*/
}
//do something
}
}
此代碼適用於gcc和msvc,但我不知道我是否可以信任它。我正在使用C++ 14。
_「..因此,遍歷字符串並使用運算符[]或插入來更改字符會使迭代器無效...」_ __false .__注意'operator []'不能將字符插入到std ::字符串'只修改現有的字符。 –
@RichardCritten:嚴格**部分錯誤**。使用'insert'會使迭代器失效;使用'[]'不會。 –