Словарь логических функций - PullRequest
1 голос
/ 18 марта 2019

Я хочу создать словарь в c ++, где я должен хранить ссылочный номер и связанную с ним логическую функцию, я подумал, что может подойти так:

map<int,..>func = {
   {1 = !},
   {2 = &&},
   {3 = ||}
};

У кого-то есть идеи, как я могу это реализовать?

1 Ответ

4 голосов
/ 18 марта 2019

Первое замечание: !, && и || не являются функциями. Они встроены в операторы, и поэтому вы не можете хранить их на карте. Однако на карте можно хранить функции, которые применяют эти операторы к своим параметрам.

Для бинарных операторов, работающих на логических значениях, это так просто:

#include <iostream>
#include <functional>
#include <map>

std::map<int,std::function<bool(bool,bool)>> my_map{ 
    {1, [](bool a,bool b){ return a && b; } } 
};

int main(void) {
    std::cout << my_map[1](true,true);
}

Однако это немного сложнее, если операторы должны работать с произвольными типами, и неясно, почему вы хотите смешивать унарные (!) и бинарные операторы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...