首先stl容器中最好是不要存放指標,如果外部被new出來的物件被銷毀了,那麼存放在容器中的指標就變成空指標了,這樣在遍歷的時候,就**了。
但是在stl容器中存放指標也有他的好處。
首先是在容器中放入物件:
先來看看現象,在vector析構後。呼叫了a的析構函式。按正常套路來析構,應該是析構10次,但是注意我上面手動delete 了乙個a,這樣的話就是呼叫11次析構函式。
也就是說當我vector裡面放物件的時候,我vector析構的時候,只清理了我vector裡面的構造的物件,並沒有清理我堆上自己new出來的物件。
然後,我們在vector裡面來放指標。
#include#includeusing namespace std;
class a
; ~a() ;
};int main()
//_a.clear();
return 0;
}
可以通過for_each演算法來把vector裡面的物件delete掉,這樣就可以來控制類的生命週期。
心得:stl容器中存放指標有好有壞。
好處:可以用來解決類的關係,比如實現組合關係。
壞處:容易出現空指標。
所以在使用的時候要小心。
STL個各個容器的內部實現
連續空間 像陣列一樣 只能向尾端插入,空間可以增長,空間增長是乙個非常好效能的事 增長三部曲 另覓更大空間 將原資料複製過去 釋放原空間三部曲 環形雙向鍊錶 deque空間是分段連續,給人造成一種連續的假象,每乙個元素都是指標,指向另外一段真正連續的空間 稱作緩衝區 緩衝區才是真正存放資料的地方,因...
STL容器 關於vector用法的記錄 持續更新
總結一下stl容器的用法,之前筆記都記在筆記本上了。一次回家,筆記本放家裡了,沒帶。搞得好多關於stl的知識點都忘了。為此以後所有筆記都搬到部落格上。為了以後自己用能翻到筆記。第一節 vector的筆記 使用一下vector,這個可是是乙個動態陣列。可以根據你的需求而擴充套件。用法 include ...
STL容器 關於string用法的記錄 持續更新
stl string是真正的字串。include include include int main c語言風格的複製。const char pasconststr hello c char pascopy new char strlen pasconststr 1 strcopy pascopy,p...