Ich denke mal, die erste Zeile ist unklar. Die zweite gibt lediglich das Zeilenende aus.
copy selbst hast Du schon angewendet. Du weißt also, dass du damit einen Bereich gegeben durch zwei Iteratoren kopieren kannst. Als Ziel dient wiederum ein Iterator.
Ersetzen wir copy durch einen for Loop, dann erhalten wir ungefähr:
Code: Alles auswählen
ostream_iterator<char> output(cout);
for (string::reverse_iterator it = wort.rbegin(); it != wort.rend(); it++)
*output++ = *it;
ostream_iterator<T> ist ein Iterator, der die übergebenen Werte in einem ostream kopiert, in unserem Beispiel nach cout. Hierfür wird der operator<< benutzt, der für T definiert sein muss.
Äquivalent zu oben wäre also
Code: Alles auswählen
for (string::reverse_iterator it = wort.rbegin(); it != wort.rend(); it++)
cout << *it;
Um rückwärts ("verkehrt herum") durch einen Bereich zu laufen, existiert der reverse_iterator. rbegin() liefert einen reverse_iterator auf das letzte Element zurück, rend() wiederum einen reverse_iterator vor dem ersten Element. Im Vergleich zum normalen iterator bewegen sich die Operationen - wie z.B. it++ - in die entgegengesetzte Richtung.
Äquivalent wäre
Code: Alles auswählen
for (int i = (int)wort.size() - 1; i >= 0; i--)
cout << wort[i];
Es gibt eben wie immer mehrere Möglichkeiten