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