fork(1) download
  1. #include <unordered_set>
  2. #include <iostream>
  3.  
  4. class MyClass {
  5. public:
  6. int i;
  7. double d;
  8. std::string s;
  9. };
  10.  
  11. int main() {
  12. auto hash = [](const MyClass& mc){
  13. return (std::hash<int>()(mc.i) * 31 + std::hash<double>()(mc.d)) * 31 + std::hash<std::string>()(mc.s);
  14. };
  15. auto equal = [](const MyClass& mc1, const MyClass& mc2){
  16. return mc1.i == mc2.i && mc1.d == mc2.d && mc1.s == mc2.s;
  17. };
  18. std::unordered_set<MyClass, decltype(hash), decltype(equal)> mySet(8, hash, equal);
  19.  
  20. mySet.insert({ 1, 4.0, "temp" });
  21. mySet.insert({ 2, 7.0, "test" });
  22. mySet.insert({ 3, 9.0, "toll" });
  23.  
  24. for (auto const &mc : mySet)
  25. std::cout << mc.i << ", " << mc.d << ", " << mc.s.c_str() << std::endl;
  26.  
  27. return 0;
  28. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
3, 9, toll
2, 7, test
1, 4, temp