Шаг 123.
Библиотека STL.
Контейнеры STL. Общие возможности контейнеров
На этом шаге мы перечислим требования, предъявляемые к контейнерам.
Здесь сформулированы общие возможности всех контейнерных классов STL. В большинстве случаев речь идет о требованиях,
которые должны выполняться всеми контейнерами STL. Ниже перечислены три основных требования.
- Контейнеры должны поддерживать семантику значений вместо ссылочной семантики. При вставке элемента контейнер создает
его внутреннюю копию, вместо того чтобы сохранять ссылку на внешний объект. Следовательно, элементы контейнера STL
должны поддерживать копирование. Если объект, который требуется сохранить в контейнере, не имеет открытого копирующего
конструктора или копирование объекта нежелательно (например, если оно занимает слишком много времени или элементы должны
принадлежать сразу нескольким контейнерам), в контейнер заносится указатель или объект указателя, ссылающийся на этот объект.
- Элементы в контейнере располагаются в определенном порядке. Это означает, что при повторном переборе с
применением итератора порядок перебора элементов должен остаться прежним. В каждом типе контейнера определены операции,
возвращающие итераторы для перебора элементов. Итераторы представляют собой основной интерфейс для работы алгоритмов STL.
- В общем случае операции с элементами контейнеров небезопасны. Вызывающая сторона должна проследить за
тем, чтобы параметры операции соответствовали требованиям. Нарушение правил (например, использование недействительного индекса)
приводит к непредсказуемым последствиям. Обычно STL не генерирует исключений в своем коде. Но если исключение
генерируется пользовательскими операциями, вызываемыми контейнером STL, ситуация меняется.
На следующем шаге мы перечислим основные операции над контейнерами.
Предыдущий шаг
Содержание
Следующий шаг