Самая большая проблема со станд.:: строка - то, что текущий стандарт не гарантирует, что его базовая система хранения непрерывна. Однако нет никаких известных реализаций STL, где строка не непрерывна, так на практике она, вероятно, не перестанет работать. На самом деле новый C++ 0x стандарт собирается решить эту проблему путем передавания под мандат того станд.:: представьте в виде строки использует непрерывный буфер, такой как станд.:: вектор.
Другой аргумент против строки - то, что его имя предполагает, что она содержит символьную строку, не двоичный буфер, который может вызвать беспорядок тем, кто считал код.
Однако я рекомендую вектор также.
Стандарт C ++ также имеет концепцию двунаправленного итератора, который является прямым итератором, который также может идти в обратном направлении (с помощью operator--
). Вместе эти пять образуют всю иерархию итераторов в параграфе 24.2 стандарта C ++.
Старый STL также имел концепцию Тривиальный Итератор . См. Его Обзор итераторов для получения подробной информации о различных итераторах.
Разработчики повышения Abrahams, Siek и Witt представили гораздо более детальный набор концепций итераторов.
Я подозреваю, что вы знаете ответ довольно хорошо, но в любом случае, эти диаграммы очень полезны для выяснения этого