~ C++17
template<class InputIt, class Distance>
void advance(InputIt& it, Distance n);
template<class InputIt, class Distance>
constexpr void advance(InputIt& it, Distance n);
: 주어진 반복자 it를 n 만큼 증가시킵니다.
임의 접근 반복자를 제외한 다른 반복자는 it += n 형식을 지원하지 않습니다.
advance는 반복문을 추상화해서 축약시킨 함수라고 볼 수 있습니다.
<예시 코드>
#include <iostream>
#include <iterator>
#include <list>
using namespace std;
int main() {
list<int> lst = { 1, 2, 3, 4, 5, 6, 7, 8 };
auto it = lst.begin();
cout << *it << endl;
int n = 3;
for (int i = 0; i < n; ++i) ++it; // it += 3은 불가능하여 반복문으로 표현
cout << *it << endl;
advance(it, n);
cout << *it;
return 0;
}
결과
