2010-07-17 4 views
1

В C++ праймера 4-е издания по Липпману, составные операторы присваивания для итератора для вектора и деки приведены:итератора

iter1 += iter2 
iter1 -= iter2 

версия Соединения-назначение сложения и вычитания итератора. Назначает значение добавления или вычитания iter1 и iter2 в iter1.

Но когда я хочу использовать их, это дает ошибку. Более того, что означает, чтобы в любом случае обеспечить составные операторы присваивания итераторам?

+0

Вы уверены, что 'iter2' является итератором, а не числом? – kennytm

+0

Довольно, KennyTM. Я могу понять, добавив номер в итератор, чтобы указать несколько мест дальше, но добавление итератора к другому итератору кажется бессмысленным. В конце концов, вы бы не добавили двух указателей и ожидали получить что-то стоящее. –

+0

@ KennyTM .. Книга так говорит. Я также думаю, что iter2 должен быть числом. –

ответ

3

Я посмотрел это в Липпман. Для меня это похоже на ошибку. Итераторы произвольного доступа (тип итератора, предоставляемые вектором и deque) предлагают составное присвоение формы

iter += n 
iter -= n 

См., Например, http://www.cplusplus.com/reference/std/iterator/RandomAccessIterator/

Составное присвоение формы Lippman написано не имеет смысла, когда вы смотрите на результирующие типы.

Смежные вопросы