So Iterieren einer Schnur über und unter Verwendung von operator[]
oder Einfügen von Zeichen zu ändern, um den Iterator ungültig machen kann. IstWerden Zeichen in Zeichenfolgen umgewandelt, um Iteratoren ungültig zu machen?
, dass auch der Fall für eine Iteration so?
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
}
}
Dieser Code funktioniert auf gcc und msvc, aber ich weiß nicht, ob ich ihm vertrauen kann. Ich benutze C++ 14.
_ ".. So Iteration über einen String und mit dem Operator [] oder Einfügen von Zeichen zu ändern, um den Iterator ungültig machen kann ..." _ __false .__ Beachten Sie, dass 'Operator []' nicht Zeichen in ein 'std eingeben :: string 'ändert nur vorhandene Zeichen. –
@RichardCritten: Streng ** teilweise falsch **. Mit 'insert' werden Iteratoren ungültig; Mit '[]' wird nicht. –