假设有一张地图 - 像这样:
map<string,pair<int,int>> operators_sw_map; //use in initialize method
有一种方法可以初始化此映射:
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<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
?
1 个回答