std::next와 std::advance의 차이점

DevCho1107

·

2023. 6. 8. 00:01

C++ 표준 라이브러리에는 반복자를 조작하는 유용한 함수들이 포함되어 있다. 

C++11 표준 라이브러리인 iterator 헤더 내의 두가지 함수에 대해 설명한다.

std::next와 std::advance는 반복자를 전진시키는 기능을 제공하지만, 몇 가지 차이점이 있는데, 

이에 대한 포스팅을 한다. 

 

1. std::next

 

현재 반복자 위치에서 주어진 거리만큼 전진한 새로운 반복자를 반환한다. 

기본적으로 'n'값이 1인 경우로 설정되어 있으며, 'n' 값을 변경하여 다른 거리로 전진시킬 수도 있다. 

아래는 예제코드. 

std::vector<int> myVector = {1, 2, 3, 4, 5};
auto it = myVector.begin();

auto nextIt = std::next(it, 3);  // it을 3만큼 전진시킨 반복자를 반환
std::cout << *nextIt;  // 출력: 4

위 예제에서 3만큼 전진시킨 nextIt는 새로운 반복자다. 

 

 

2. std::advance

 

'std::advance' 함수는 반복자를 특정 거리만큼 직접 이동시킨다. 주어진 반복자를 참조형태로 받아서 해당 반복자를 직접 변경하는 함수이다. 

아래는 예제코드. 

std::vector<int> myVector = {1, 2, 3, 4, 5};
auto it = myVector.begin();

std::advance(it, 3);  // it을 3만큼 앞으로 이동
std::cout << *it;  // 출력: 4

 

 

3. 차이점 정리 

반환값: ' std::next' 는 전진한 새로운 반복자를 반환하고, 'std::advance'는 반복자를 직접 변경함. 

기본값 : 'std::next'  는 기본적으로 'n' 값이 1인 경우로 설정되어 있음.

'< Programming > > C++' 카테고리의 다른 글

c++ 11 std::function  (0) 2023.05.23
c++ Lambda  (0) 2023.05.23
emplace_back  (0) 2023.05.08
constexpr ( generalized constant expressions )  (0) 2023.05.04
C++ 17 에서 업데이트 된 기능 정리.  (0) 2023.04.25