На этом шаге мы сравним строки и векторы.
Строки имеют много общего с векторами, и это не удивительно - оба типа контейнеров обычно реализуются в виде динамических массивов. Строку
можно рассматривать как специализированную разновидность вектора с символьными элементами. Более того, строки могут использоваться как
контейнеры STL (смотри 380 шаг). Впрочем, интерпретировать строку как специализированный вектор опасно,
поскольку между ними существует немало принципиальных различий, главное из которых - предназначение контейнера.
- Векторы предназначены для работы с элементами контейнеров, а не с контейнером в целом. По этой причине реализации векторов оптимизируются
для эффективного выполнения операций с отдельными элементами. - Строки предназначены для работы с целым контейнером (строкой), поэтому для них оптимизируются операции присваивания и передачи всего
контейнера.
Различия в целях обычно приводят к совершенно разным реализациям. Например, строки часто реализуются на базе подсчета ссылок, а для векторов
такая реализация вообще нехарактерна. Впрочем, вектор может использоваться как обычная С-строка. За подробностями обращайтесь
на 137 шаг.
Со следующего шага мы начнем знакомиться со строеним строковых классов.