Java c ++のハッシュセットに似たものがあるかどうか興味がありました。つまり、.contains(e)のみを実行するため、高速なデータ構造です。同様に、提案するデータ構造に対して.contains()を実行する方法を教えていただければ、非常にありがたいです。O、すでに行っているので、c ++のドキュメントだけを見て投稿しないでください。
std::unordered_set<>
(標準§23.5.6)、その find
メソッド(ルックアップを行うため)を平均複雑度O(1):
#include <iostream>
#include <unordered_set>
int main()
{
std::unordered_set<int> example = {1, 2, 3, 4};
auto search = example.find(2);
if(search != example.end()) {
std::cout << "Found " << (*search) << '\n';
}
else {
std::cout << "Not found\n";
}
}
編集:
@Drew Dormannが提案しているように、代わりに count
を使用することもできます。これも、平均的な複雑さはO(1)です。
#include <iostream>
#include <unordered_set>
int main()
{
std::unordered_set<int> example = {1, 2, 3, 4};
if(example.count(2)) {
std::cout << "Found\n";
}
else {
std::cout << "Not found\n";
}
}