c ++ от начального итератора до конечного итератора и выполнение действия - PullRequest
0 голосов
/ 03 августа 2020

Если у меня есть начальный итератор и конечный итератор, указывающие на структуры, определенные как:

struct point {
int x;
int y;
};

, и я хочу go от начального итератора до конечного итератора (включительно), и один по одному добавьте значения x из структуры в вектор, как бы мне это сделать?

Моя проблема в том, что со стандартом для l oop, например:

for (auto it = start_iterator; it != end_iterator; ++it)

конец итератор не будет включен, хотя я также счастлив использовать stl-алгоритмы / библиотеки.

Ответы [ 2 ]

4 голосов
/ 03 августа 2020

введите описание изображения здесь Итераторы в C ++ - это последовательность, которая определяется парой итераторов, определяющих полуоткрытый диапазон [начало: конец). То есть начало указывает на первый элемент последовательности, а конечная указывает на элемент, следующий за последним.

Ссылка: Язык программирования C ++: Stroustrup.

3 голосов
/ 03 августа 2020

Предполагая, что end_iterator на самом деле указывает на элемент (то есть безопасно получить итератор, следующий за ним), вы можете использовать std::next из <iterator>:

for (auto it = start_iterator; it != std::next(end_iterator); ++it) { ... }
...