为了账号安全,请及时绑定邮箱和手机立即绑定

我试着用了int i=*Iter;但是这个赋值语句是错误的啊?

我试着用了int i=*Iter;但是这个赋值语句是错误的啊?

C++
catspeake 2023-04-22 22:18:25
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++;                }       }



查看完整回答
反对 回复 2023-04-25
  • 1 回答
  • 0 关注
  • 97 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信