На этом шаге мы рассмотрим обработку исключений при выполнении операций над множествами и мультимножествами.
Множества и мультимножества относятся к категории узловых контейнеров, поэтому любая неудача при конструировании нового узла просто оставляет контейнер в прежнем состоянии. Более того, поскольку деструкторы обычно не генерируют исключений, удаление узла не может завершиться неудачей.
Однако при вставке нескольких элементов из-за необходимости сохранения упорядоченности полное восстановление после исключений становится непрактичным. Поэтому для всех одноэлементных операций вставки обеспечивается транзакционная безопасность (то есть такие операции либо завершаются успешно, либо не вносят изменений). Кроме того, все многоэлементпые операции удаления всегда гарантированно завершаются успешно. Если в результате копирования/присваивания критерия сравнения возможны исключения, то функция swap() может их генерировать.
На 121 шаге приведены общие сведения об обработке исключений в STL.
На следующем шаге мы рассмотрим примеры использования множеств и мультимножеств.