fork(1) download
  1. #include <iostream>
  2. #include <tuple>
  3. #include <unordered_map>
  4. using namespace std;
  5.  
  6. using coord1D = std::size_t;
  7. using coord2D = std::pair<coord1D,coord1D>;
  8. struct pair_hash {
  9. template <class T1, class T2>
  10. std::size_t operator() (const std::pair<T1, T2> &pair) const {
  11. return std::hash<T1>()(pair.first) ^ std::hash<T2>()(pair.second);
  12. }
  13. };
  14. class matrix {
  15. std::unordered_map<coord2D, double, pair_hash> m;
  16. public:
  17. auto& operator[] (pair<int,int> p) {
  18. if (p.first>p.second)
  19. p = make_pair(p.second, p.first);
  20. return m[p];
  21. }
  22. };
  23.  
  24. int main() {
  25. matrix m;
  26. m[make_pair(1,5)] = 27.2;
  27. cout << m[make_pair(1,5)]<<" "<<m[make_pair(5,1)]<<endl;
  28. return 0;
  29. }
Success #stdin #stdout 0s 15240KB
stdin
Standard input is empty
stdout
27.2 27.2