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_multiset<string> s;
に対してs.contains("key");
のようにstring
型のキーを持つ連想コンテナの検索インタフェースに文字列リテラルを渡した際、string
の一時オブジェクトが作られないようにできる。詳細はstd::hash
クラスのページを参照。
テンプレートパラメータ制約
- (2) :
Pred::is_transparent
型およびHash::is_transparent
型が定義されていること
戻り値
x
とk
を共通の変数a
であるとして、以下と等価:
計算量
- 平均: 定数時間
- 最悪:
size
について線形時間
例
#include <iostream>
#include <unordered_set>
int main()
{
std::unordered_multiset<int> ums = {1, 2, 3};
// キー2の要素が含まれているか
if (ums.contains(2)) {
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 ✅