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가 아니면, lastfirst에서 도달 가능하지 않을 때 동작은 정의되지 않아요. InputIt이 LegacyRandomAccessIterator면, firstlast가 서로 도달 가능하지 않을 때 동작은 정의되지 않아요.

매개변수

  • first — 첫 요소를 가리키는 반복자
  • last — 범위의 끝을 가리키는 반복자

타입 요구사항: InputIt은 LegacyInputIterator 요구사항을 만족해야 해요. InputIt이 추가로 LegacyRandomAccessIterator 요구사항을 만족하면 연산이 더 효율적이에요.

반환값

first에서 last까지 가는 데 필요한 증가 횟수예요. 임의접근 반복자를 사용하고 firstlast에서 도달 가능하면 값이 음수일 수 있어요(C++11부터).

복잡도

선형이에요. 다만 InputIt이 추가로 LegacyRandomAccessIterator 요구사항을 만족하면 상수예요.

가능한 구현

template<class InputIt>
constexpr typename std::iterator_traits<InputIt>::difference_type
    distance(InputIt first, InputIt last)
{
    // 임의접근이면 last - first, 아니면 선형 증가
}

더 알아보기 (Learn more)

cppreference