fork download
  1. #include <iostream>
  2. #include <map>
  3. #include <tuple>
  4.  
  5. template <typename T1, typename T2, typename T3>
  6. class foobar
  7. {
  8. public:
  9. void add(T1 t1, T2 t2, T3 t3)
  10. {
  11. m1[t1] = std::make_tuple(t1, t2, t3);
  12. m2[t2] = std::make_tuple(t1, t2, t3);
  13. }
  14.  
  15. std::tuple<T1,T2,T3> getA(T1 t1)
  16. {
  17. return m1[t1];
  18. }
  19.  
  20. std::tuple<T1,T2,T3> getB(T2 t2)
  21. {
  22. return m2[t2];
  23. }
  24.  
  25. private:
  26. std::map<T1,std::tuple<T1,T2,T3>> m1;
  27. std::map<T2,std::tuple<T1,T2,T3>> m2;
  28. };
  29.  
  30. int main()
  31. {
  32. foobar<int, int, bool> array; // or something along those lines
  33.  
  34. array.add(1, 101, true);
  35. array.add(2, 102, false);
  36.  
  37. auto res1 = array.getA(1); // returns first object
  38. auto res2 = array.getA(2); // returns second object
  39. auto res3 = array.getB(102); // returns second object again
  40.  
  41. std::cout << std::get<0>(res1) << std::endl;
  42. std::cout << std::get<1>(res2) << std::endl;
  43. std::cout << std::get<2>(res3) << std::endl;
  44.  
  45. return 0;
  46. }
Success #stdin #stdout 0s 3032KB
stdin
Standard input is empty
stdout
1
102
0