最終更新日時(UTC):
が更新

履歴 編集

function
<unordered_map>

std::unordered_multimap::contains(C++20)

bool contains(const key_type& x) const; // (1)

template <class K>
bool contains(const K& k) const;        // (2)

概要

指定されたキーに一致する要素がコンテナに含まれているかを判定する。

  • (1) : キーxを検索し、合致する要素が含まれるかを判定する
  • (2) : キーkを透過的に検索し、合致する要素が含まれるかを判定する

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

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

  • (2) : Pred::is_transparent型およびHash::is_transparent型が定義されていること

戻り値

xkを共通の変数aであるとして、以下と等価:

return find(a) != end();

計算量

  • 平均: 定数時間
  • 最悪: size について線形時間

#include <iostream>
#include <unordered_map>

int main()
{
  std::unordered_multimap<char, int> um = {
    {'a', 3},
    {'b', 1},
    {'c', 4}
  };

  // キー'b'の要素が含まれているか
  if (um.contains('b')) {
    std::cout << "contain" << std::endl;
  }
  else {
    std::cout << "doesn't contain" << std::endl;
  }
}

出力

contain

バージョン

言語

  • C++20

処理系

参照