Концепция Fail-Fast итераторов
Доброго времени суток.
Если я правильно понимаю, Fail-Fast итераторы сразу прекращают работу (обычно посредством генерации исключений), если обнаружат, что набор данных по которому они итерируются был изменен после того, как началась итерация (или с момента создания итератора).
Вопрос: почему в случае итераторов подход "могу читать до тех пор, пока никто ничего не изменил" предпочли подходу "могу вносить изменения только тогда, пока никто ничего не читает"?
Ответы (1 шт):
Автор решения: Pavel Mayorov
→ Ссылка
Это сделано по одной простой причине: так дешевле. В противном случае пришлось бы отслеживать все живые итераторы - а это дорого. Особенно на старом C++ без rvalue-ссылок или на языках со сборкой мусора.