c ++ 11 — исключительная безопасность контейнеров в переполнении стека

Я сталкивался с этим термином исключение безопасности контейнеров. Я хочу понять, что именно означает исключение безопасности?
Есть ли какое-то сравнение для разных контейнеров?

1

Решение

Если вы посмотрите на алгоритмы для различных структур данных, вы увидите, что они включают последовательность шагов. Структура данных имеет некоторую целостность (непротиворечивый внутренний смысл) в начале шагов и в конце.

Например, рассмотрим vector, который включает в себя динамически растущий массив. Обычно это включает в себя массив, целое число, описывающее размер массива, и целое число, описывающее количество используемых элементов. При вставке элемента может быть выделен новый массив в два раза больше, элементы скопированы в новый, целое число, описывающее размер, будет умножено на два, целое число, описывающее количество используемых элементов, будет увеличено на 1 и т. Д. ,

Исключение, выданное в этой точке (например, конструктором копирования элементов), может привести к завершению последовательности шагов в середине. Например, если вы сначала небрежно обновите целые числа, только затем выполните выделение и копирование (и не перехватываете исключения), тогда структура данных потеряет свою внутреннюю согласованность.

Значение исключительная безопасность для контейнеров STL заключается в том, что они гарантируют, что такие завершения оставят структуру данных в согласованном состоянии.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector