C++ STL的基本基本原理
生活随笔
收集整理的這篇文章主要介紹了
C++ STL的基本基本原理
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
STL都是在內存的堆區分配的,但是其析構也是STL幫我們做好的,不用手動去delete。
1.vector
邏輯地址連續的一片內存空間,當空間不足,重新申請新的地址空間,將原有的數據復制過去,而新的地址空間的大小C++沒有規定,依賴于編譯器的實現。在VC++中是原來的1.5倍,而g++中則是原來的2倍。
關于這一點可以從簡單的實驗來驗證,vector的capacity成員函數返回vector實際申請的空間大小,可以通過不斷向vector中插入100個數據,觀察capacity的大小變化情況來判斷數據的整張情況。代碼如下:
#include<iostream> #include<vector> using namespace std; int main() {vector<int> vec;for (int i = 0; i<100; i++) {vec.push_back(i);cout << "capacity is " << vec.capacity() << endl;} }下圖左右分別是在VS2015和g++ 4.8的運行結果圖,可以發現證實了我們之前的說法:當內存空間不足時新分配的內存空間在VC++下是原來的1.5倍,在g++下是原來的2倍。
?
?
2.map
底層紅黑樹,有較快的查找插入刪除速度,均為O(lgn)時間復雜度。另外紅黑樹結構決定了其不能同時插入兩個key值一樣的節點,而是會被直接丟棄掉,也就是插不進去。這一點可以從其是平衡二叉樹的性質看出來。
轉載于:https://www.cnblogs.com/shenshenlei/p/5528426.html
總結
以上是生活随笔為你收集整理的C++ STL的基本基本原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 交叉编译inetutils并配置teln
- 下一篇: Sublime Text Package