fork download
  1. #include <boost/intrusive/unordered_set.hpp>
  2. #include <vector>
  3. #include <functional>
  4. #include <boost/functional/hash.hpp>
  5. #include <iostream>
  6.  
  7. using namespace boost::intrusive;
  8.  
  9. class MyClass : public unordered_set_base_hook<>
  10. { //This is a derivation hook
  11. int int_;
  12.  
  13. public:
  14. unordered_set_member_hook<> member_hook_; //This is a member hook
  15.  
  16. MyClass(int i)
  17. : int_(i)
  18. {}
  19.  
  20. friend bool operator== (const MyClass &a, const MyClass &b)
  21. { return a.int_ == b.int_; }
  22.  
  23. friend std::size_t hash_value(const MyClass &value)
  24. { return std::size_t(value.int_); }
  25. };
  26.  
  27. //Define an unordered_set that will store MyClass objects using the base hook
  28. typedef unordered_set<MyClass> BaseSet;
  29.  
  30. //Define an unordered_multiset that will store MyClass using the member hook
  31. typedef member_hook<MyClass, unordered_set_member_hook<>, &MyClass::member_hook_>
  32. MemberOption;
  33. typedef unordered_multiset< MyClass, MemberOption> MemberMultiSet;
  34.  
  35. int main()
  36. {
  37. for (int i = 0; i < 33; i++)
  38. std::cout << "i: " << i << ". Suggested: " << BaseSet::suggested_upper_bucket_count(i) << std::endl;
  39. return 0;
  40. }
Success #stdin #stdout 0.01s 5516KB
stdin
Standard input is empty
stdout
i: 0. Suggested: 3
i: 1. Suggested: 3
i: 2. Suggested: 3
i: 3. Suggested: 3
i: 4. Suggested: 7
i: 5. Suggested: 7
i: 6. Suggested: 7
i: 7. Suggested: 7
i: 8. Suggested: 11
i: 9. Suggested: 11
i: 10. Suggested: 11
i: 11. Suggested: 11
i: 12. Suggested: 17
i: 13. Suggested: 17
i: 14. Suggested: 17
i: 15. Suggested: 17
i: 16. Suggested: 17
i: 17. Suggested: 17
i: 18. Suggested: 29
i: 19. Suggested: 29
i: 20. Suggested: 29
i: 21. Suggested: 29
i: 22. Suggested: 29
i: 23. Suggested: 29
i: 24. Suggested: 29
i: 25. Suggested: 29
i: 26. Suggested: 29
i: 27. Suggested: 29
i: 28. Suggested: 29
i: 29. Suggested: 29
i: 30. Suggested: 53
i: 31. Suggested: 53
i: 32. Suggested: 53