如果在c中有一些类似
Java哈希集的东西,我就好奇.我是一个快速浏览的数据结构,因为我只会运行它.(E)就可以了.同样,如果你能启发我如何对你建议的任何数据结构做一个.contains()(),我将非常感谢.哦,请不要发布,只要看看c docs,因为我已经这样做,发现他们很繁重.
解决方法
您可以使用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,4}; if(example.count(2)) { std::cout << "Found\n"; } else { std::cout << "Not found\n"; } }