vector的內部是使用動態陣列的方式來實現的,如果動態陣列的內部實現不夠用,就要動態的重新分配記憶體。然後把原陣列的內容拷貝過去。
vector和陣列類似,擁有連續的記憶體空間,支援隨機的訪問,在中間進行元素的插入和刪除的操作時間複雜度是o(n)
list是由雙向鍊錶實現的,只能通過陣列指標來進行資料訪問,遍歷中間的元素,時間的複雜度是o(n).
一般情況下使用vector,在需要從首尾兩端進行插入或刪除操作的時候需要選擇dequeue.
map的底層是一棵紅黑樹,在對節點的插入或是刪除操作中,通過旋轉來保持平衡性,最壞情況下的插入、刪除、查詢時間是o(logn)
auto_ptr可以代替指標進行類似指標的操作,並不用關心記憶體的釋放,auto_ptr的析構函式自動釋放它繫結的動態分配物件。
classa *pa = new classa;
auto_ptr
ptr1(pa);
auto_ptr
ptr2(pa);
C 高頻面試題
malloc free是c語言的標準庫函式,new delete是c 的運算子。由於malloc free是庫函式而不是運算子,不在編譯器控制許可權之內。對於使用者自定義的物件而言,用maloc free無法滿足動態管理物件的要求。廢話 new是型別安全的,malloc不是。int a new fl...
C 高頻面試題
字首式可以返回物件的引用,而字尾式必須返回物件的值所以導致在大物件產生時產生了較大的複製開銷,因此處理自定義型別的時候盡量使用字首式。a b b a a b 相對於c,c 多了過載 內聯函式 異常處理,擴充套件了物件導向的設計內容 類 繼承 虛函式 模板。c 並不是完全的物件導向,它也可以寫出面向過...
c 高頻面試題
malloc free是c語言的標準庫函式,new delete是c 的運算子。由於malloc free是庫函式而不是運算子,不在編譯器控制許可權之內。對於使用者自定義的物件而言,用maloc free無法滿足動態管理物件的要求。廢話 new是型別安全的,malloc不是。int a new fl...