Программирование. Принципы и практика использования C++ Исправленное издание
Шрифт:
Б.4.3. Конструкторы, деструкторы и присваивания
Контейнеры имеют много разнообразных конструкторов и операторов присваивания. Перечислим конструкторы, деструкторы и операторы присваивания для контейнера C (например, типа
Для некоторых контейнеров и типов элементов конструктор или операция копирования может генерировать исключения.
Б.4.4.
Контейнер можно интерпретировать как последовательность, порядок следования элементов в которой определен либо итератором контейнера, либо является обратным к нему. Для ассоциативного контейнера порядок определяется критерием сравнения (по умолчанию оператором
Б.4.5. Доступ к элементам
К некоторым элементам можно обратиться непосредственно.
Некоторые реализации — особенно их тестовые версии — всегда выполняют проверку диапазонов, но рассчитывать на корректность или наличие такой проверки на разных компьютерах нельзя. Если этот вопрос важен, просмотрите документацию.
Б.4.6. Операции над стеком и двусторонней очередью
Стандартные контейнеры
Обратите внимание на то, что функции
Отметим, что операции удаления элементов не возвращают значений. Если бы они это делали, то копирующие конструкторы, генерирующие исключения, могли бы серьезно усложнить реализацию. Для доступа к элементам стека и очереди рекомендуем использовать функции
Б.4.7. Операции над списком
Ниже приведены операции над списком.
Результат
Б.4.8. Размер и емкость
Размер — это количество элементов в контейнере; емкость — это
Изменяя размер или емкость, можно переместить элементы в новое место. Из этого следует, что итераторы (а также указатели и ссылки) на элементы могут стать некорректными (т.е. относиться к старым адресам).
Б.4.9. Другие операции
Контейнеры можно копировать (см. раздел Б.4.3), сравнивать и обменивать.
Если сравнение контейнеров производится с помощью соответствующего оператора (например,
Б.4.10. Операции над ассоциативными контейнерами
Ассоциативные контейнеры обеспечивают поиск на основе ключей.
Упорядоченные ассоциативные контейнеры (
Первый итератор пары, возвращенной функцией
В качестве альтернативы можно выполнить следующую эквивалентную инструкцию:
Однако эта инструкция выполняется вдвое дольше. Алгоритмы
Б.5. Алгоритмы
В заголовке