fork(2) download
  1. #include <iostream>
  2. #include <unordered_set>
  3.  
  4. struct MyStruct
  5. {
  6. int x, y;
  7. double mutable z;
  8.  
  9. MyStruct(int x, int y)
  10. : x{ x }, y{ y }, z{ 0.0 }
  11. {
  12. }
  13. };
  14.  
  15. struct MyStructHash
  16. {
  17. inline size_t operator()(MyStruct const &s) const
  18. {
  19. size_t ret = s.x;
  20. ret *= 2654435761U;
  21. return ret ^ s.y;
  22. }
  23. };
  24.  
  25. struct MyStructEqual
  26. {
  27. inline bool operator()(MyStruct const &s1, MyStruct const &s2) const
  28. {
  29. return s1.x == s2.x && s1.y == s2.y;
  30. }
  31. };
  32.  
  33. int main()
  34. {
  35. std::unordered_set<MyStruct, MyStructHash, MyStructEqual> set;
  36. auto pair = set.emplace(100, 200);
  37.  
  38. if (pair.second)
  39. pair.first->z = 300.0;
  40.  
  41. std::cout << set.begin()->z;
  42. }
  43.  
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
300