set_equal_range
set_equal_range (std::set::equal_range — 동등 범위)
std::set에서 지정한 키와 동등한 모든 원소를 포함하는 범위를 반환하는 멤버 함수예요. 두 이터레이터 쌍으로 표현돼요.
출처: 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. set은 중복이 없으므로, 키와 동등한 원소가 있으면 첫 이터레이터가 그 원소를, 둘째가 그 다음 원소를 가리켜요. 없으면 두 이터레이터는 lower_bound 지점을 가리켜요.
복잡도
컨테이너 크기에 대해 로그(logarithmic)예요.
예제
#include <iostream>
#include <set>
int main()
{
std::set<int> s{1, 2, 3};
auto [lo, hi] = s.equal_range(2);
std::cout << *lo << '\n'; // 2
}