struct table_factor{string name;//名字int type;//类型int declare_line;//声明所在行数 int addr;//地址int upbound;//数组上界int parameter_count;//参数个数,针对函数来说的int return_type;//返回值类型,针对函数来说的};vector<table_factor> symbol_table;void destory_symbol_table(){for(vector<table_factor>::iterator Iter=symbol_table.end()-1;;Iter--){if(symbol_table[Iter].type==2){Iter=symbol_table.erase(Iter);}else{return;}}}这个程序里面if语句的symbol_table[Iter]总是会报错,说是Iter不是int类型的是table_factor类型的,额我知道大概是因为定义的时候用的是这个类型,但是我想实现的是删除vector中的元素,网上的方法就是erase(),定义一个vector<table_factor>::iterator类型的量但是这里就没办法用Iter访问特定的元素了,应该怎么处理啊。。想访问Iter指定的动态数组中的元素
1 回答
尚方宝剑之说
TA贡献1788条经验 获得超4个赞
你是想删除类型为2的所用记录,还是一条记录
如果是所用的就把return 去掉
代码修改如下:
for (vector<table_factor>::iterator Iter=symbol_table.begin();Iter!=symbol.end();) { if (symbol_table[Iter].type==2) { Iter=symbol_table.erase(Iter); return ; } else { Iter++; } } |
- 1 回答
- 0 关注
- 149 浏览
添加回答
举报
0/150
提交
取消