Java HashSet equivalente en c++
data-structures lookup (1)
Tenía curiosidad por si había algo parecido al hashset de Java en c ++. Es decir, una estructura de datos de aspecto rápido, ya que solo estaré ejecutando .contains (e) en ella. Del mismo modo, si pudiera informarme sobre cómo hacer un .contains () en cualquier estructura de datos que proponga, le agradecería mucho. O, por favor, no publique, simplemente mire los documentos de C ++, como ya lo he hecho, y considérelos onerosos.
Puede usar std::unordered_set<>
(estándar § 23.5.6), su método de find
(para hacer una búsqueda) como una complejidad promedio de 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";
}
}
EDITAR:
Según lo sugerido por @Drew Dormann, puede usar alternativamente el count
, que también tiene una complejidad promedio de 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";
}
}