最終更新日時: 2026年02月17日 23時22分33秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<unordered_map>

# std::unordered_multimap::find(C++11)

    iterator find(const key_type& x);           // (1) C++11
    constexpr iterator find(const key_type& x); // (1) C++26

    const_iterator find(const key_type& x) const;           // (2) C++11
    constexpr const_iterator find(const key_type& x) const; // (2) C++26

    template <class K> iterator find(const K& k);           // (3) C++20
    template <class K> constexpr iterator find(const K& k); // (3) C++26

    template <class K> const_iterator find(const K& k) const;           // (4) C++20
    template <class K> constexpr const_iterator find(const K& k) const; // (4) C++26

## 概要

コンテナ内で指定されたキーに合致する要素を検索し、見つかった場合はそれへのイテレータを返し、見つからなかった場合は `end` （コンテナの最後の要素の次）を指すイテレータを返す。
指定されたキーに合致する要素の範囲を取得するには `equal_range`を用いる。
また、指定されたキーに合致する要素が存在するかを調べる場合は `count` を用いる。

- (1) : 非`const`な`*this`オブジェクトに対する検索
- (2) : `const`な`*this`オブジェクトに対する検索
- (3) : 非`const`な`*this`オブジェクトに対する透過的な検索
- (4) : `const`な`*this`オブジェクトに対する透過的な検索

(3), (4)の透過的な検索は、`Pred::is_transparent`および`Hash::is_transparent`が定義される場合に有効になる機能であり、例として`unordered_multimap<string, int> m;`に対して`m.find("key");`のように`string`型のキーを持つ連想コンテナの検索インタフェースに文字列リテラルを渡した際、`string`の一時オブジェクトが作られないようにできる。詳細は`std::hash`クラスのページを参照。

## パラメータ

- `x` : 検索するキー。`key_type` は `unordered_multimap` コンテナの中で `Key` の別名として定義される。ここで `Key` は 1 番目のテンプレートパラメータである。
- `k` : 検索するキー。`key_type`と透過的に比較可能な型`K`型のキーである。

## テンプレートパラメータ制約

- (3), (4) : `Pred::is_transparent`型および`Hash::is_transparent`型が定義されていること

## 戻り値

指定した値が見つかった場合はその要素へのイテレータ、そうでない場合は `end` へのイテレータ。

## 例外

投げない。

## 計算量

- 平均： 定数時間
- 最悪： `size` について線形時間

## 例

    #include <iostream>
    #include <unordered_map>

    int main()
    {
      std::unordered_multimap<int, char> um;

      um.insert(std::make_pair(1, 'a'));

      std::cout << (um.find(1) != um.end()) << std::endl;
      std::cout << (um.find(2) != um.end()) << std::endl;

      return 0;
    }

### 出力

    1
    0

## バージョン

### 言語

- C++11

### 処理系

- Clang: ??
- GCC: ??
- ICC: ??
- Visual C++: 2012 ✅

## 関連項目

名前 | 説明
--- | ---
`count` | 指定したキーにマッチする要素の数を返す
`equal_range` | 指定したキーにマッチする要素の範囲を返す

## 参照

- P0919R3 Heterogeneous lookup for unordered containers
- P3372R3 constexpr containers and adaptors