Почему толкание элемента на одном из концов std::deque
сделать недействительными все существующие итераторы (все ссылки остаются действительными, хотя)?
Я понимаю, что deque реализован в виде массива массивов, и что нажатие элемента на любом конце не приведет к перераспределению существующих элементов. И именно поэтому ссылки остаются в силе. Но так должны итераторы.
Я также понимаю, что итератор deque имеет тип RandomAccessIterator и что этот итератор должен поддерживать некоторые операции, такие как сложение / вычитание постоянного числа, ++, — и т. д.
Что я не понимаю, так это то, какая из операций должна поддерживаться RandomAccessIterator не может быть реализовано базовой структурой std::deque
,
Задача ещё не решена.
Других решений пока нет …