Функция advance
Функция advance сдвигает переданный итератор
на заданное количество позиций. В первый параметр
мы передаем итератор, который нужно сдвинуть,
а во второй - количество позиций, на которое
следует сдвинуть итератор. Положительное число
сдвигает итератор вперед, отрицательное - назад.
Функция изменяет сам итератор и ничего не возвращает.
Синтаксис
advance(iterator, count)
Пример
Давайте сдвинем итератор на 2 позиции
вперед и выведем элемент, на который он указывает:
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.begin();
advance(it, 2);
cout << *it << endl;
return 0;
}
Результат выполнения кода:
3
Пример
Давайте сдвинем итератор на 2 позиции
назад от конца вектора и выведем элемент:
#include <iostream>
#include <vector>
#include <iterator>
using namespace std;
int main()
{
vector<int> vec = {1, 2, 3, 4, 5};
auto it = vec.end();
advance(it, -2);
cout << *it << endl;
return 0;
}
Результат выполнения кода:
4