004
18.12.2008, 16:08 Uhr
0xdeadbeef
Gott (Operator)
|
Wenn es um Ersetzung geht, ist insert nicht der richtige Weg - insert fügt ein. Auch, wie Guybrush richtig anmerkt, brauchen Operationen auf Positionen die Position, und nicht das, was an der Position steht.
Wenn ich richtig verstehe, was du da vorhast:
C++: |
int i = 0;
t.clear(); while(i < b.size()) { if(b[i] == 'H') { t += 'O'; } else { t += b[i]; } ++i; }
|
bzw. kürzer:
C++: |
t.clear(); for(int i = 0; i < b.size(); ++i) { t += b[i] == 'H' ? 'O' : b[i]; }
|
Wobei der Guru natürlich
C++: |
t.clear(); t.reserve(b.size()); std::replace_copy(b.begin(), b.end(), std::back_inserter(t), 'H', 'O');
|
schreibt. (Dafür <algorithm> und <iterator> #includen) -- Einfachheit ist Voraussetzung für Zuverlässigkeit. -- Edsger Wybe Dijkstra |