關於list迴圈刪除元素,迭代器失效的問題

2021-06-26 08:58:58 字數 331 閱讀 3475

問題的關鍵是:在刪除元素之前,將當前迭代器儲存下來。當然,這裡僅支援list,因為list的鏈式的刪除乙個元素,前面的指標指向下乙個元素,vector和queue就不好辦了,它們或者是線性的或者是半線性半鏈式,迭代器會失效

#include#includeusing namespace std;

int main()

list::iterator it=l.begin();

list::iterator ittemp=l.begin();

for(;it!=l.end();++it)

{ cout<

List迴圈輸出時刪除元素

listlists new arraylist lists.add ad lists.add dv lists.add dvs lists.add adf for int i 0 isystem.out.println s 結果dvs adf因為你在lists.remove s 的時候,ad被刪除了...

List迭代器方法新增元素和for迴圈新增元素例項

public class text1 迭代器只能遍歷出建立迭代器物件之前的集合的狀態內容 public static void main string args list li new arraylist li.add 4 li.add 0,2 li.add 0,1 建立迭代器 listiterat...

迴圈中刪除List中的元素

remove 方法刪除元素後會立刻更新list的size,因此index也發生了變化,會導致漏掉某些元素。for int i 0 i解決方案一 在刪除某乙個元素後直接break,當然這種情況只適合刪除乙個特定元素,不適合刪除多個元素 解決方案二 index回退一位,如下 for int i 0 i刪...