Итак, я хочу понять, разрешено ли для const_iterator (т. Е. Не изменяться) возвращать значение.Май оператор итератора * возвращает значение-значение?
То, что я обнаружил, что тип возвращаемого *r
должен быть reference
(1) где reference
является iterator_traits<X>::reference
(2). Именование ясно указывает на то, что обычно это должен быть ссылочный тип, но нужно ли это?
Есть ли разница между различными категориями итераторов в этом аспекте?
Все мои ссылки на стандарт (см. Ниже) относятся к n3242 (последняя версия с ++ 11, я считаю), но мне также интересно узнать разницу между версиями C++, если они есть.
(1) 24.2.2.2
(2) 24.2.1.11
'const_iterator' должен возвращать' сопзЬ & ', так что вы не имеете дорогостоящие операции копирования. – NathanOliver
Итератор для 'vector' указывает на обертку. так да. –
Jarod42
@NathanOliver, точка не в копировании, а в возврате значения, которое находится в итераторе. – RiaD