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

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指定的动态数组中的元素






catspeake
浏览 102回答 1
1回答

尚方宝剑之说

你是想删除类型为2的所用记录,还是一条记录&nbsp;如果是所用的就把return 去掉代码修改如下:&nbsp;&nbsp;&nbsp;&nbsp;for(vector<table_factor>::iterator&nbsp;Iter=symbol_table.begin();Iter!=symbol.end();)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(symbol_table[Iter].type==2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iter=symbol_table.erase(Iter);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Iter++;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}
打开App,查看更多内容
随时随地看视频慕课网APP