Должны ли итераторы C ++ быть в состоянии убывать после прохождения последнего элемента? - PullRequest
4 голосов
/ 23 мая 2011

Я модифицировал свои контейнеры, чтобы они были совместимы с STL. Я изменил свои итераторы, чтобы иметь необходимые функции. Все они являются итераторами с произвольным доступом. В настоящее время они прекрасно работают со всеми применимыми алгоритмами STL. Но один из моих итераторов не будет функционировать, как только он станет недействительным (за пределами). Нужно ли иметь это свойство? В частности, я боюсь итератора end (), который не может быть уменьшен. Обратите внимание, что его можно сравнивать и даже рассчитывать расстояние с другими действительными итераторами. В настоящее время размер итератора составляет 4 байта, я действительно не хочу добавлять еще 4, если это действительно не нужно.

Заранее спасибо,
Cem

Ответы [ 2 ]

4 голосов
/ 23 мая 2011

Для random_access_iterator это требуется.Вы должны будете осуществить это.В частности, согласно 24.1.4.1 для bidirectional_iterator (из которых random_access_iterator является специализацией) уменьшение всегда должно быть действительным.

3 голосов
/ 23 мая 2011

std :: reverse_iterator зависит от того, является ли container.end () допустимым и может быть уменьшен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...