Использование и обращение к std::pair в std::map?

80
18 апреля 2021, 23:40

Допустим, есть map - вот такого вида:

map<string,pair<int,int>> operators_sw_map; //use in initialize method

есть метод, в котором происходит инициализация этого map:

void Initialize()
  { //второй параметр в pair - отвечает за приоритет операции
    //чем больше число - тем выше приоритет
    //0 - бинарная операция
   //1 - унарная операция
  //2  - блок скобок
operators_sw_map["&&"]=make_pair(0,0);
operators_sw_map["||"]=make_pair(1,0);
operators_sw_map["!"]=make_pair(2,1);
operators_sw_map["->"]=make_pair(3,0);
operators_sw_map["<-"]=make_pair(4,0);
operators_sw_map["<->"]=make_pair(5,0);
operators_sw_map["XOR"]=make_pair(6,0);
operators_sw_map["("]=make_pair(7,2);
operators_sw_map[")"]=make_pair(8,2);
 }

Далее, я использую этот map в switch:

map<string,pair<int,int>>::iterator it= operators_sw_map.find(oper_statement[i]);//ищем оператор

       if (oper_statement[i]=="!") {
           unar_operations=1;
       }
       else  {
           unar_operations=0;
       }
       // проходимся по сгенерированной таблице
       for (int j = 0; j < statement.size(); ++  j) {// столбец
           for (int d = 0; d < LogicalTable[j].size(); d++) { //строка
               switch (it->second) {
               case 0: //&&
               {
     // .....

Вопрос: как вот здесь - switch (it->second) обратиться к первому элементу std::pair - который, в свою очередь - является ключем в map ?

Answer 1
auto& pair = operators_sw_map[i];
if(pair.first) {
    ....
}
READ ALSO
Считывание данных

Считывание данных

Как обработать строку что-бы получился массив чисел?

110
Ссылки и временные объекты

Ссылки и временные объекты

Есть такой код:

127
ввод только чисел и работа с ними

ввод только чисел и работа с ними

Из интернета "достал" три функции из интернета по теме : "ввод только чисел"

87