Разрешено ли генерировать стандартные операции итератора?

Рассмотрим стандартный итератор, в котором необходимо выделить память для обхода структуры данных. Позволяет ли стандарт итератору генерировать исключение, если память не может быть выделена? В качестве примера представьте себе итератор ввода для древовидных структур данных. В этом случае для обхода дерева вам нужно либо добавить и поддерживать указатель на родительский элемент каждого узла (что замедлит операции, не требующие такого указателя, как для вставки / стирания / поиска в дереве), либо использовать стек чтобы помочь итератору сохранять указатели на пройденные узлы. В этом случае при продвижении стек может расти до тех пор, пока не закончится свободная память и итератор не будет вынужден выбросить.

5
задан Martin 19 February 2012 в 01:51
поделиться