用vectorvedge儲存了邊,現在要把這些邊都刪除:
edge
(1,15) (1,29) (1,40) (15,1) (15,29) (15,40) (29,1) (29,15) (40,1) (40,15)
用如下**
for(int i=0;ipair pair=vedge.get(i);
system.out.println("check:"+pair);
system.out.println("remove edge: "+pair);
vedge.remove(pair);
}結果沒有全部刪除,列印資訊如下:
check:pair [a=1, b=15]
remove edge: pair [a=1, b=15]
check:pair [a=1, b=40]
remove edge: pair [a=1, b=40]
check:pair [a=15, b=29]
remove edge: pair [a=15, b=29]
check:pair [a=29, b=1]
remove edge: pair [a=29, b=1]
check:pair [a=40, b=1]
remove edge: pair [a=40, b=1]
這說明乙個問題:迭代器發生了問題,(1,15) 訪問之後沒有訪問(1,29),將之跳過,訪問了(1,40)...指標i指向出錯。
第一輪刪除,指標是1:
12 3 4 5 6 7 8 9 10
第二輪刪除,指標是2:
234 5 6 7 8 9 10
第三輪刪除,指標是3:
2 456 7 8 9 10
第四輪刪除,指標是4:
2 4 678 9 10
第五輪刪除,指標是5:
2 4 6 8910
第六輪(實際沒有發生,判斷條件沒過,大小是5,指標卻是6):
2 4 6 8 10
了解這個問題之後,修改**,使用iterator
for(iteratoriter=vedge.iterator();iter.hasnext();)
修改之後,一切正常,iter的指向正確,vector中的元素全部刪除。
注意:容器內使用remove要慎重,要知道當前訪問的物件和刪除的物件都是誰,這樣能避免bug!
容器內元素float時,容器自動高度的解決方案
先看html 如下 1 div id wrap 2 div id header 3 h1 three colums layout.h1 4div 56 div id content 7 div id main 8 p hello,css html.p 9 p i love this game.p 1...
如何在docker容器內使用systemctl
docker版本 root localhost gae proxy docker version client version 1.10.3 api version 1.22 package version docker common 1.10.3 46.el7.centos.10.x86 64 g...
使用iframe框架時,子頁面內跳轉整個頁面
由於開發需要,很多時候需要使用到iframe框架,即子頁面,子頁面使用是挺方便的,但如果子頁面呢需要跳轉整個頁面呢,比如我就遇到了乙個問題,我子頁面有個功能需要登入,所以連線的是登入頁面,但登入頁面只在子頁面中顯示,這就顯得很不合理了,在這裡,我介紹幾種方法,第一種,是比較大眾的方法,及子頁面內標籤...