Java HashSet等于c

前端之家收集整理的这篇文章主要介绍了Java HashSet等于c前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
如果在c中有一些类似 Java哈希集的东西,我就好奇.我是一个快速浏览的数据结构,因为我只会运行它.(E)就可以了.同样,如果你能启发我如何对你建议的任何数据结构做一个.contains()(),我将非常感谢.哦,请不要发布,只要看看c docs,因为我已经这样做,发现他们很繁重.

解决方法

您可以使用std :: unordered_set<> (标准§23.5.6),其 find方法(做一个查找)作为O(1)的平均复杂度:
  1. #include <iostream>
  2. #include <unordered_set>
  3.  
  4. int main()
  5. {
  6. std::unordered_set<int> example = {1,2,3,4};
  7.  
  8. auto search = example.find(2);
  9. if(search != example.end()) {
  10. std::cout << "Found " << (*search) << '\n';
  11. }
  12. else {
  13. std::cout << "Not found\n";
  14. }
  15. }

编辑:

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

  1. #include <iostream>
  2. #include <unordered_set>
  3.  
  4. int main()
  5. {
  6. std::unordered_set<int> example = {1,4};
  7.  
  8. if(example.count(2)) {
  9. std::cout << "Found\n";
  10. }
  11. else {
  12. std::cout << "Not found\n";
  13. }
  14. }

猜你在找的Java相关文章