В коде:
std::string original;
std::string reversed(original.rbegin(), original.rend());
Конструктор , который вызывается:
template< class InputIt >
basic_string( InputIt first, InputIt last,
const Allocator& alloc = Allocator() );
Создает строку с содержимым диапазона [first, last)
.
Следовательно, будет использован диапазон итераторов [original.rbegin(), original.rend())
. rbegin()
и rend()
возврат обратный итератор. Это означает, что диапазон начинается с последнего символа исходной строки и заканчивается первым символом (rend()
указывает на предыдущий символ на тот, который не будет доступен для конструктора, так как эта сторона интервала открыта) .