multimap_equal_range

multimap_equal_range (std::multimap::equal_range — 동등 범위)

std::multimap에서 지정한 키와 동등한 모든 원소를 포함하는 범위를 반환하는 멤버 함수예요. 두 이터레이터 쌍으로 표현돼요.

출처: cppreference

본문

시그니처는 다음과 같아요.

std::pair<iterator, iterator> equal_range( const Key& key );        // (1)
std::pair<const_iterator, const_iterator> equal_range( const Key& key ) const; // (2)
template< class K >
std::pair<iterator, iterator> equal_range( const K& x );            // (3) (since C++14)
template< class K >
std::pair<const_iterator, const_iterator> equal_range( const K& x ) const; // (4) (since C++14)

컨테이너에서 주어진 키를 가진 모든 원소를 포함하는 범위를 반환해요. 범위는 두 이터레이터로 정의되는데, 하나는 key보다 작지 않은 첫 번째 원소를, 다른 하나는 key보다 첫 번째 원소를 가리켜요. 바꿔 말하면 첫 이터레이터는 lower_bound()로, 둘째는 upper_bound()로 얻을 수 있어요.

매개변수

  • key: 원소들을 비교할 키 값
  • x: Key와 비교할 수 있는 대체 값

반환값

원하는 범위를 나타내는 std::pair. 중복 키를 허용하므로, 같은 키를 가진 원소가 여러 개면 첫 이터레이터가 그 중 첫 번째를, 둘째가 마지막 다음을 가리켜요. 동등한 원소가 없으면 두 이터레이터는 lower_bound 지점을 가리켜요.

복잡도

컨테이너 크기에 대해 로그(logarithmic)예요.

예제

#include <iostream>
#include <map>
int main()
{
    std::multimap<int, char> m{{1, 'a'}, {1, 'b'}, {2, 'c'}};
    auto [lo, hi] = m.equal_range(1);
    for (auto it = lo; it != hi; ++it)
        std::cout << it->second << ' ';   // a b
}

더 알아보기 (Learn more)

cppreference