Могу я делать адресную арифметику с указателями на STL:: вектор:: итератор

В настоящее время я использую итератор, чтобы перерыть вектор и протестировать его элементы. Я получаю доступ к использованию элементов

std::vector<int>::iterator it;
if (*it == 0);

Я могу использовать ту же логику стиля адресной арифметики с указателями, чтобы также протестировать следующий элемент (не изменяя мой итератор)?

Я сначала должен видеть, продвинет ли это итератор за пределы

if (it != myvec.end())

Затем протестируйте и элемент тока и следующий элемент

if (*it == 1 && *(it + 1) == 1)

Это будет работать, как я ожидаю от использования указателей?

11
задан Iharob Al Asimi 5 October 2015 в 19:14
поделиться

2 ответа

Да, итераторы для std :: vector являются итераторами произвольного доступа , поэтому вы добавляете / вычитаете целые значения чтобы получить другие допустимые итераторы.

Технически, это может быть не арифметика указателей, но они действуют точно так же, как указатели.

16
ответ дан 3 December 2019 в 05:57
поделиться

Это действительно будет работать, поскольку векторный итератор является итератором с произвольным доступом. Вы не только можете действовать с ними, как с указателями, но и в значительной степени они реализованы с использованием указателей / арифметики указателей.

3
ответ дан 3 December 2019 в 05:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: