struct table_factor{string name;//名字int type;//類型int declare_line;//聲明所在行數(shù) int addr;//地址int upbound;//數(shù)組上界int parameter_count;//參數(shù)個(gè)數(shù),針對(duì)函數(shù)來(lái)說(shuō)的int return_type;//返回值類型,針對(duì)函數(shù)來(lái)說(shuō)的};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;}}}這個(gè)程序里面if語(yǔ)句的symbol_table[Iter]總是會(huì)報(bào)錯(cuò),說(shuō)是Iter不是int類型的是table_factor類型的,額我知道大概是因?yàn)槎x的時(shí)候用的是這個(gè)類型,但是我想實(shí)現(xiàn)的是刪除vector中的元素,網(wǎng)上的方法就是erase(),定義一個(gè)vector<table_factor>::iterator類型的量但是這里就沒(méi)辦法用Iter訪問(wèn)特定的元素了,應(yīng)該怎么處理啊。。想訪問(wèn)Iter指定的動(dòng)態(tài)數(shù)組中的元素
1 回答

尚方寶劍之說(shuō)
TA貢獻(xiàn)1788條經(jīng)驗(yàn) 獲得超4個(gè)贊
你是想刪除類型為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 關(guān)注
- 195 瀏覽