- #include <iostream> 
- #include <unordered_map> 
- #include <functional> 
-   
- const std::unordered_map<char, std::function<int(int, int)>> operations = { 
-     {'+', [](int a, int b){ return a + b; }}, 
-     {'-', [](int a, int b){ return a - b; }}, 
-     {'*', [](int a, int b){ return a * b; }}, 
-     {'/', [](int a, int b){ return a / b; }}, 
-     {'%', [](int a, int b){ return a % b; }}, 
-     // etc... 
- }; 
-   
- int main() { 
- 	char a = '+'; 
- 	auto op = operations.at(a); 
- 	int b = op(2, 2); 
- 	std::cout << b << std::endl; 
-   
- 	a = '-'; 
- 	op = operations.at(a); 
- 	b = op(2, 2); 
- 	std::cout << b << std::endl; 
-   
- 	//... 
-   
- 	return 0; 
- } 
				I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KI2luY2x1ZGUgPGZ1bmN0aW9uYWw+Cgpjb25zdCBzdGQ6OnVub3JkZXJlZF9tYXA8Y2hhciwgc3RkOjpmdW5jdGlvbjxpbnQoaW50LCBpbnQpPj4gb3BlcmF0aW9ucyA9IHsKICAgIHsnKycsIFtdKGludCBhLCBpbnQgYil7IHJldHVybiBhICsgYjsgfX0sCiAgICB7Jy0nLCBbXShpbnQgYSwgaW50IGIpeyByZXR1cm4gYSAtIGI7IH19LAogICAgeycqJywgW10oaW50IGEsIGludCBiKXsgcmV0dXJuIGEgKiBiOyB9fSwKICAgIHsnLycsIFtdKGludCBhLCBpbnQgYil7IHJldHVybiBhIC8gYjsgfX0sCiAgICB7JyUnLCBbXShpbnQgYSwgaW50IGIpeyByZXR1cm4gYSAlIGI7IH19LAogICAgLy8gZXRjLi4uCn07CgppbnQgbWFpbigpIHsKCWNoYXIgYSA9ICcrJzsKCWF1dG8gb3AgPSBvcGVyYXRpb25zLmF0KGEpOwoJaW50IGIgPSBvcCgyLCAyKTsKCXN0ZDo6Y291dCA8PCBiIDw8IHN0ZDo6ZW5kbDsKCglhID0gJy0nOwoJb3AgPSBvcGVyYXRpb25zLmF0KGEpOwoJYiA9IG9wKDIsIDIpOwoJc3RkOjpjb3V0IDw8IGIgPDwgc3RkOjplbmRsOwoKCS8vLi4uCgoJcmV0dXJuIDA7Cn0=