#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;
}