В настоящее время я использую итератор, чтобы перерыть вектор и протестировать его элементы. Я получаю доступ к использованию элементов
std::vector<int>::iterator it;
if (*it == 0);
Я могу использовать ту же логику стиля адресной арифметики с указателями, чтобы также протестировать следующий элемент (не изменяя мой итератор)?
Я сначала должен видеть, продвинет ли это итератор за пределы
if (it != myvec.end())
Затем протестируйте и элемент тока и следующий элемент
if (*it == 1 && *(it + 1) == 1)
Это будет работать, как я ожидаю от использования указателей?
Да, итераторы для std :: vector
являются итераторами произвольного доступа , поэтому вы добавляете / вычитаете целые значения чтобы получить другие допустимые итераторы.
Технически, это может быть не арифметика указателей, но они действуют точно так же, как указатели.
Это действительно будет работать, поскольку векторный итератор является итератором с произвольным доступом. Вы не только можете действовать с ними, как с указателями, но и в значительной степени они реализованы с использованием указателей / арифметики указателей.