關於STL 容器當中存放指標的個人理解

2021-08-19 23:39:45 字數 860 閱讀 6875

首先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...