ranges::minmax_element

ranges::minmax_element (범위 최소·최대 위치 — ranges)

범위에서 최소값과 최대값의 위치를 한 번에 찾는 ranges 버전 알고리즘이에요. <algorithm> 헤더에 있어요.

출처: cppreference

본문

std::ranges::minmax_element는 범위에서 최소·최대 원소를 가리키는 반복자 쌍을 반환해요.

namespace std::ranges {
template< class R, class Proj = std::identity,
          std::indirect_strict_weak_order<std::projected<ranges::iterator_t<R>, Proj>>
              Comp = ranges::less >
constexpr ranges::minmax_element_result<ranges::borrowed_iterator_t<R>>
    minmax_element( R&& r, Comp comp = {}, Proj proj = {} );
}
  • 반환 타입 minmax_element_result{min, max}. 빈 범위면 {last, last}.
  • 복잡도: 최대 3·⌊(N−1)/2⌋번의 비교.
std::vector<int> v{3, 1, 4, 1, 5};
auto [lo, hi] = std::ranges::minmax_element(v);
// lo=1, hi=5

최소·최대 위치가 모두 필요할 때 효율적으로 얻는 ranges 버전이에요.

더 알아보기 (Learn more)

cppreference