#include <iostream>
#include <map>
#include <functional>
#include <string>
 
using namespace std;
 
void f_1234() { cout << "1234\n"; }
 
void f_ABCD() { cout << "ABCD\n"; }
 
void f_default() { cout << "default\n"; }
 
void f( const char* s )
{
  using function_t = std::function< void() >;
  using string_to_function = map< string, function_t >;
 
  static string_to_function m =
  {
    {"1234", f_1234}, // assosciate "1234" to function f_1234
    {"ABCD", f_ABCD}, // assosciate "ABCD" to function f_ABCD
  };
 
  auto i = m.find( s );
 
  return i == m.end()
    ? f_default() // not found in map
    : i->second(); // found, so we call the function
}
 
int main()
{
  f( "1234" );
  f( "ABCD" );
}
 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bWFwPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHN0cmluZz4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp2b2lkIGZfMTIzNCgpIHsgY291dCA8PCAiMTIzNFxuIjsgfQoKdm9pZCBmX0FCQ0QoKSB7IGNvdXQgPDwgIkFCQ0RcbiI7IH0KCnZvaWQgZl9kZWZhdWx0KCkgeyBjb3V0IDw8ICJkZWZhdWx0XG4iOyB9Cgp2b2lkIGYoIGNvbnN0IGNoYXIqIHMgKQp7CiAgdXNpbmcgZnVuY3Rpb25fdCA9IHN0ZDo6ZnVuY3Rpb248IHZvaWQoKSA+OwogIHVzaW5nIHN0cmluZ190b19mdW5jdGlvbiA9IG1hcDwgc3RyaW5nLCBmdW5jdGlvbl90ID47CgogIHN0YXRpYyBzdHJpbmdfdG9fZnVuY3Rpb24gbSA9CiAgewogICAgeyIxMjM0IiwgZl8xMjM0fSwgLy8gYXNzb3NjaWF0ZSAiMTIzNCIgdG8gZnVuY3Rpb24gZl8xMjM0CiAgICB7IkFCQ0QiLCBmX0FCQ0R9LCAvLyBhc3Nvc2NpYXRlICJBQkNEIiB0byBmdW5jdGlvbiBmX0FCQ0QKICB9OwoKICBhdXRvIGkgPSBtLmZpbmQoIHMgKTsKCiAgcmV0dXJuIGkgPT0gbS5lbmQoKQogICAgPyBmX2RlZmF1bHQoKSAvLyBub3QgZm91bmQgaW4gbWFwCiAgICA6IGktPnNlY29uZCgpOyAvLyBmb3VuZCwgc28gd2UgY2FsbCB0aGUgZnVuY3Rpb24KfQoKaW50IG1haW4oKQp7CiAgZiggIjEyMzQiICk7CiAgZiggIkFCQ0QiICk7Cn0K