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類型的,額我知道大概是因為定義的時候用的是這個類型,但是我想實現(xiàn)的是刪除vector中的元素,網上的方法就是erase(),定義一個vector<table_factor>::iterator類型的量但是這里就沒辦法用Iter訪問特定的元素了,應該怎么處理啊。。想訪問Iter指定的動態(tài)數組中的元素
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 關注
- 183 瀏覽
添加回答
舉報
0/150
提交
取消