занимают постоянное время, чтобы переместить итератор к элементам строки в следующем:перебор станд :: строковые элементы
std::string str // string of size 100 MB
std::string::iterator iter = str.begin();
std::advance(iter, str.size()-1);
это займет постоянное время как в поиске по индексу?
char c = str[str.size()-1];
Используйте строку :: iterator, только если вы действительно хотите мутировать. Он запускает копирование при записи, что приводит к запутыванию результатов профилирования. – pmr