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
型が定義されていること
戻り値
x
とk
を共通の変数a
であるとして、以下と等価:
計算量
- 平均: 定数時間
- 最悪:
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
処理系
- Clang:
- GCC: 9.1 ✅
- Visual C++: 2019 Update 1 ✅