flat_multimap_find

flat_multimap_find (std::flat_multimap::find — 키로 원소 찾기)

std::flat_multimap에서 특정 키와 동등한 원소를 찾아 이터레이터로 반환하는 멤버 함수예요. 투명 비교자(Compare::is_transparent)를 쓰면 Key 인스턴스를 만들지 않고도 값을 기준으로 검색할 수 있어요.

출처: cppreference

본문

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

iterator find( const Key& key );                                // (1) (since C++23)
const_iterator find( const Key& key ) const;                    // (2) (since C++23)
template< class K >
iterator find( const K& x );                                    // (3) (since C++23)
template< class K >
const_iterator find( const K& x ) const;                        // (4) (since C++23)

(1,2) key와 동등한 키를 가진 원소를 찾아요. 컨테이너에 요청한 키를 가진 원소가 여러 개 있으면 그 중 아무거나 반환할 수 있어요.

(3,4) x동등(equivalent) 하게 비교되는 키를 가진 원소를 찾아요. 이 오버로드는 한정 식별자 Compare::is_transparent가 유효하고 타입을 나타낼 때만 오버로드 해석에 참여해요. Key 인스턴스를 만들지 않고도 이 함수를 호출할 수 있게 해 주는 오버로드예요.

매개변수

  • key: 찾을 원소의 키 값
  • x: 키와 투명하게 비교할 수 있는 어떤 타입의 값

반환값

요청한 원소를 가리키는 이터레이터. 그런 원소가 없으면 past-the-end(end() 참고) 이터레이터를 반환해요.

복잡도

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

예제

#include <iostream>
#include <flat_map>
struct LightKey { int x; };
struct FatKey { int x; int data[1000]; };
bool operator<(const FatKey& fk, const LightKey& lk) { return fk.x < lk.x; }
bool operator<(const LightKey& lk, const FatKey& fk) { return lk.x < fk.x; }
int main()
{
    // 간단한 비교 데모.
    std::flat_multimap<int, char> example{{1, 'a'}, {2, 'b'}};
    if (auto search = example.find(2); search != example.end())
        std::cout << "Found " << search->first << ' ' << search->second << '\n';
}

더 알아보기 (Learn more)

cppreference