原文:C++中使用vector.erase()需要注意的事項

本人菜鳥一枚。。 今天在用vector.erase 的時候,發現總是不能把應該erase掉的東西erase干凈。 舉個栗子: 乍一看似乎沒問題。 首先,用num vec i 而不用迭代器iterator可以避免出現 野指針 的問題,但是不知道二者性能上有沒有差別 其次,執行num vec.erase num vec.begin i 操作后,num vec中減少一個元素,這時num vec i 代表 ...

2014-06-05 16:31 0 48116 推薦指數:

查看詳情

C++ vector erase函數的使用注意事項

最近使用了順序容器的刪除元素操作,特此記錄下該函數的注意事項。 在C++primer中對c.erase(p) 這樣解釋的: c.erase(p) 刪除迭代器p所指向的元素,返回一個指向被刪元素之后元素的迭代器,若p指向尾元素,則返回尾后迭代器,若p是尾后迭代器,則會產生 ...

Mon Dec 19 03:44:00 CST 2016 0 12282
C++ map中使用erase應該注意到的問題

注意:此程序在win環境下會出現上述描述的問題;在mac環境下第一種方式是正常運行的。Map.erase有3個重載函數: void erase(iterator position); size_type erase(const key_type& x ...

Tue Oct 02 18:55:00 CST 2018 0 3478
剖析vector.erase()實現

先看以下代碼: 結果竟然如下: 我們將其刪除前后每個元素的地址打印出來,如下: erase在刪除當前元素后,會將其后元素前移,以保證vector的連續存儲。 vs編譯器erase實現: `stl_vector.h`實現: 上面程序 ...

Fri May 31 23:31:00 CST 2019 0 972
C】——使用creat()函數需要注意事項

  若成功則返回為只寫打開的文件描述符,若出錯則返回-1;   有時候我們使用creat函數的時候可能會得不到我們想要的結果。例如:   當我們使用次函數的目的創建一個文件——foo,foo的屬性為 -rw-rw-rw-;   但是我們執行完creat函數之后 ...

Sat Sep 14 02:32:00 CST 2013 0 3898
vectorerase用法注意事項

以前就發現了vector中的erase方法有些詭異(^_^),稍不注意,就會出錯。今天又一次遇到了,就索性總結一下,尤其是在循環體中用erase時,由於vector.begin() 和vector.end()是變化的,因此就引入了錯誤的可能性。 erase的函數原型有兩種形式 ...

Tue Oct 04 19:20:00 CST 2016 1 19225
 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM