我很好奇 C++ 中是否有类似于 Java HashSet 的东西? IE。一个快速查看的数据结构,因为我只会运行.contains(e)
在上面。同样,如果你能启发我如何做.contains()
无论您提出什么数据结构,我都会非常感激。 O,请不要发帖,只看 c++ 文档,因为我已经这样做了,发现它们很麻烦。
您可以使用std::unordered_set<>
(标准§ 23.5.6),其find http://en.cppreference.com/w/cpp/container/unordered_set/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";
}
}
EDIT:
正如@Drew Dormann 所建议的,您也可以使用count http://en.cppreference.com/w/cpp/container/unordered_set/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";
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)