Глава 28. СТАНДАРТНАЯ БИБЛИОТЕКА ШАБЛОНОВ...317

We use cookies. Read the Privacy and Cookie Policy

ОГЛАВЛЕНИЕ

       В этой главе...

►Контейнер string 317

►Контейнер list 320

►Итераторы 321

►Использование контейнера map 324

Некоторые программы сразу же пересылают получаемые данные, однако большинству программ приходится сначала сохранять информацию. Структуры, которые используются для хранения данных, называются контейнерами или коллекциями ( в моей книге это взаимозаменяемые понятия ). Пока что мы с вами в основном для хранения данных использовали массивы. Массив в качестве контейнера обладает рядом привлекательных свойств, в частности, высокой скоростью сохранения и выборки данных. Кроме того, можно объявить массив для хранения данных любого типа. Тем не менее и у массива есть свои существенные недостатки.

Во-первых, вы должны заранее знать размер массива. В общем случае это требование невыполнимо, хотя иногда вы знаете, что количество элементов не может превысить некоторое число. Однако те же вирусы успешно используют такие предположения программиста о количестве элементов массива, делая их ошибочными и заставляя программу выполнить запись за пределами массива. Не имеется также никакого иного способа увеличить массив, кроме как объявить новый массив и перенести в него содержимое старого массива меньшего размера.

Во-вторых, вставка элементов в произвольное место массива влечёт за собой копирование элементов внутри массива. Это достаточно дорогостоящая операция как с точки зрения используемой памяти, так и процессорного времени. Сортировка же элементов в пределах массива ещё более дорогостояща.

В настоящее время в состав С++ входит стандартная библиотека шаблонов ( Standard Template Library, STL ), включающая множество различных типов контейнеров, каждый из которых обладает своими достоинствами ( и, само собой, недостатками ).

«STL — весьма объёмная библиотека с массой сложно реализованных контейнеров. Весь приведённый здесь материал следует рассматривать как беглое знакомство лишь с некоторыми возможностями STL.»

[Советы]