'C++' std::advance

토스트·2025년 5월 11일

'C++' std::iterator

목록 보기
2/3

advance

~ 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;
}

결과

0개의 댓글