I have a list of commands that if a user inputs then it will call separate functions. Talking to a friend he said I should use switch, which is faster and easier to read over "if, else if, else" statements.
When checking how to implement this I realised that I wouldn't be able to because the input is a string and for a switch to work I would need to cast it to an enum and it seems like the most straightforward option I have is to map each of the options like below.
header
enum class input 
{
    min,
    max,
    avg,
    count,
    stdev,
    sum,
    var,
    pow
};
map<string, input> inMap
{ 
    { "min", input::min },
    { "max", input::max }, 
    { "avg", input::avg },
    { "count", input::count },
    { "stdev", input::stdev }, 
    { "sum", input::sum },
    { "var", input::var },
    { "pow", input::pow }
};
Is there a more accessible option to use enum where I don't have to map each value? This is very time-consuming and I'm not seeing any benefits at the moment.
cpp file
void test::processInput(vector<string> input) {
    switch (inMap[input[0]]) {
        case inMap::min:
            MIN(input);
            break;
        case inMap::max:
            MAX(input);
            break;
        case inMap::avg:
            AVG(input);
            break;
        case inMap::count:
            COUNT(input);
            break;
        case inMap::stdev:
            STDEV(input);
            break;
        case inMap::sum:
            SUM(input);
            break;
        case inMap::var:
            VAR(input);
            break;
        case inMap::pow:
            POW(input);
            break;
        default:
            std::cout << "Error, input not found" << std::endl;
    }
}
I read some posts about hashing the value instead, is this a good option? At this point wouldn't be just better to continue using if, else if, else?
Thanks!
 
     
     
    