multiset_equal_range
multiset_equal_range (std::multiset::equal_range — 동등 범위)
std::multiset에서 지정한 키와 동등한 모든 원소를 포함하는 범위를 반환하는 멤버 함수예요. 두 이터레이터 쌍으로 표현돼요.
출처: 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 <set>
int main()
{
std::multiset<int> s{1, 1, 2};
auto [lo, hi] = s.equal_range(1);
for (auto it = lo; it != hi; ++it)
std::cout << *it << ' '; // 1 1
}