Здравствуйте, rg_software, Вы писали:
RO>>Я бы рассказал про итераторы, всё равно большинство людей их до конца, похоже, не осилило. Например, почему std::reverse(str.begin(), str.end()) — неверный ответ на вопрос «как развернуть строку». По этому поводу есть две поучительныеАвтор: Odi$$ey
Дата: 14.03.03
картинкиАвтор: Roman Odaisky
Дата: 26.03.07
.
_>Кстати, почему так строку не развернуть?
В инете этот вариант часто предлагают.
Так строку не развернуть, но по причинам, не имеющим почти никакого отношения к C++.
Проблема будет при попытке развернуть строку, содержащую многобайтный символ (который при этом вывернется наизнанку и станет невалидным). Или строку Unicode, содержащую суррогатные пары (которые тоже вывернутся наизнанку) или nonspacing диакритику в decomposed форме (которая уйдёт на соседнюю букву).
std::basic_string<T>::[const_]reverse_iterator, естественно, никакого улучшения с точки зрения корректности не даст.