Namespaces
Variants

std::flat_multimap<Key,T,Compare,KeyContainer,MappedContainer>:: equal_range

From ko.cppreference.net

std:: pair < iterator, iterator > equal_range ( const Key & key ) ;
(1) (C++23부터)
(C++26부터 constexpr)
std:: pair < const_iterator, const_iterator >
equal_range ( const Key & key ) const ;
(2) (C++23부터)
(C++26부터 constexpr)
template < class K >
std:: pair < iterator, iterator > equal_range ( const K & x ) ;
(3) (C++23부터)
(C++26부터 constexpr)
template < class K >

std:: pair < const_iterator, const_iterator >

equal_range ( const K & x ) const ;
(4) (C++23부터)
(C++26부터 constexpr)

주어진 키를 가진 모든 요소를 포함하는 범위를 반환합니다. 이 범위는 두 개의 반복자로 정의되며, 하나는 주어진 키보다 작지 않은 첫 번째 요소를 가리키고 다른 하나는 주어진 키보다 큰 첫 번째 요소를 가리킵니다.

또는 첫 번째 반복자는 lower_bound() 로 얻을 수 있고, 두 번째 반복자는 upper_bound() 로 얻을 수 있습니다.

1,2) 키를 key 와 비교합니다.
3,4) 키를 값 x 와 비교합니다.
이 오버로드는 Compare 가 transparent 인 경우에만 오버로드 해결에 참여합니다. 이를 통해 Key 의 인스턴스를 생성하지 않고 이 함수를 호출할 수 있습니다.

목차

매개변수

key - 요소와 비교할 키 값
x - Key 와 비교 가능한 대체 값

반환값

std::pair 원하는 범위를 정의하는 한 쌍의 반복자를 포함하는:

  • 첫 번째 반복자는 주어진 키보다 작지 않은 첫 번째 요소를 가리키며, 해당 요소가 존재하지 않으면 end ( ) 를 가리킵니다.
  • 두 번째 반복자는 주어진 키보다 큰 첫 번째 요소를 가리키며, 해당 요소가 존재하지 않으면 end ( ) 를 가리킵니다.

emplace 와 힌트 없는 insert 는 항상 상한(upper bound)에 삽입되므로, 힌트가 있는 insert 나 emplace_hint 를 사용하여 다른 위치에 요소를 삽입하지 않는 한, 동등 범위(equal range) 내에서 동등한 요소들의 순서는 삽입 순서와 동일합니다.

복잡도

컨테이너 크기에 대해 로그 시간 복잡도를 가집니다.

예제

#include <iostream>
#include <flat_map>

int main()
{
    std::flat_multimap<int, char> dict
    {
        {1, 'A'},
        {2, 'B'},
        {2, 'C'},
        {2, 'D'},
        {4, 'E'},
        {3, 'F'}
    };

    auto range = dict.equal_range(2);

    for (auto i = range.first; i != range.second; ++i)
        std::cout << i->first << ": " << i->second << '\n';
}

출력:\n

2: B
2: C
2: D

참고

특정 키를 가진 요소를 찾습니다
(공개 멤버 함수)
컨테이너에 특정 키를 가진 요소가 있는지 확인합니다
(공개 멤버 함수)
특정 키와 일치하는 요소의 개수를 반환합니다
(공개 멤버 함수)
첫 번째 요소를 가리키는 반복자를 반환합니다 큰 주어진 키보다
(공개 멤버 함수)
첫 번째 요소를 가리키는 반복자를 반환합니다 작지 않은 주어진 키보다
(공개 멤버 함수)
이진 탐색을 사용하여 주어진 값과 일치하는 요소의 범위를 찾습니다
(함수 템플릿 & 알고리즘 함수 객체)