Java HashSet equiv em c ++

Eu curioso como se houvesse algo parecido com o hashset Java em c + +. Ou seja, uma estrutura de dados com look rápido, pois só estarei executando .contains (e) nela. Da mesma forma, se você pudesse me esclarecer sobre como fazer um .contains () em qualquer estrutura de dados que você propõe, eu ficaria muito grato. O, por favor, não poste, apenas olhe para os documentos em C ++ como eu já fiz e os considero onerosos.

Você pode usar std::unordered_set<> (padrão § 23.5.6), seu método find (para fazer uma pesquisa) como uma complexidade média de O (1):

 #include  #include  int main() { std::unordered_set 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"; } } 

EDITAR:

Como sugerido por @Drew Dormann, você pode alternativamente usar count , que também tem uma complexidade média de O (1):

 #include  #include  int main() { std::unordered_set example = {1, 2, 3, 4}; if(example.count(2)) { std::cout << "Found\n"; } else { std::cout << "Not found\n"; } }