std::distance
std::distance (반복자 거리)
first에서 last까지의 거리(홉 수)를 돌려주는 함수예요. C++11부터 있어요(C++17부터 constexpr).
출처: cppreference
본문
<iterator> 헤더에 정의돼 있어요.
template< class InputIt >
typename std::iterator_traits<InputIt>::difference_type
distance( InputIt first, InputIt last );
first에서 last까지의 거리를 돌려줘요. InputIt이 LegacyRandomAccessIterator가 아니면, last가 first에서 도달 가능하지 않을 때 동작은 정의되지 않아요. InputIt이 LegacyRandomAccessIterator면, first와 last가 서로 도달 가능하지 않을 때 동작은 정의되지 않아요.
매개변수
first— 첫 요소를 가리키는 반복자last— 범위의 끝을 가리키는 반복자
타입 요구사항: InputIt은 LegacyInputIterator 요구사항을 만족해야 해요. InputIt이 추가로 LegacyRandomAccessIterator 요구사항을 만족하면 연산이 더 효율적이에요.
반환값
first에서 last까지 가는 데 필요한 증가 횟수예요. 임의접근 반복자를 사용하고 first가 last에서 도달 가능하면 값이 음수일 수 있어요(C++11부터).
복잡도
선형이에요. 다만 InputIt이 추가로 LegacyRandomAccessIterator 요구사항을 만족하면 상수예요.
가능한 구현
template<class InputIt>
constexpr typename std::iterator_traits<InputIt>::difference_type
distance(InputIt first, InputIt last)
{
// 임의접근이면 last - first, 아니면 선형 증가
}