fork download
  1. #include <iostream>
  2. #include <map>
  3. using namespace std;
  4.  
  5. template <typename T>
  6. T default_value() { return {}; }
  7. template <>
  8. const char* default_value<const char*>() { return "default"; }
  9. template <typename T1, typename T2>
  10. T2 mapGetByKey(std::map<T1, T2>& map, T1 key, T2 defaultValue=default_value<T2>())
  11. {
  12. auto it = map.find(key);
  13.  
  14. if (it != map.end())
  15. {
  16. return it->second;
  17. }
  18.  
  19. return defaultValue;
  20.  
  21. };
  22. int main() {
  23. std::map<int, float> m1;
  24. std::map<int, const char*> m2;
  25. cout << mapGetByKey(m1, 0) << endl;
  26. cout << mapGetByKey(m2, 0) << endl;
  27. return 0;
  28. }
Success #stdin #stdout 0s 3412KB
stdin
Standard input is empty
stdout
0
default