Java HashSet equivalent in C++

Java HashSet equivalent in C++

本文关键字:C++ in equivalent HashSet Java      更新时间:2023-10-16

我很好奇在c++中是否有类似Java哈希集的东西?也就是说,一个快速的数据结构,因为我只会在它上面运行.contains(e)。同样,如果您能告诉我如何在您提出的任何数据结构上做.contains(),我将非常感激。哦,请不要只看c++文档,因为我已经这样做了,发现它们很累人。

您可以使用std::unordered_set<>(标准§23.5.6),它的find方法(进行查找)作为平均复杂度为0 (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 foundn";
    }
}
编辑:

根据@Drew Dormann的建议,您可以选择使用count,它的平均复杂度也为0 (1):

#include <iostream>
#include <unordered_set>
int main()
{  
    std::unordered_set<int> example = {1, 2, 3, 4};
    if(example.count(2)) {
        std::cout << "Foundn";
    }
    else {
        std::cout << "Not foundn";
    }
}