c 幾種STL比較

2021-10-23 17:44:47 字數 1062 閱讀 7825

stl工作和面試考的比較多了,下面整理一下。

1、vector

變長一維陣列,連續存放的記憶體塊,有保留記憶體,堆中分配記憶體;

支援操作,高效率的隨機訪問;

在最後增加元素時,一般不需要分配記憶體空間,速度快;在中間或開始操作元素時要進行記憶體拷貝效率低;

vector高效的原因在於配置了比其所容納的元素更多的記憶體,記憶體重新配置會花很多時間;

注:需要高效的隨即訪問,而不在乎插入和刪除使用vector。

2、list

雙向鍊錶,記憶體空間上可能是不連續的,無保留記憶體,堆中分配記憶體;

不支援隨機訪問,開始和結尾元素的訪問時間快,其它元素都o(n);

在任何位置安插和刪除元素速度都比較快,安插和刪除操作不會使其他元素的各個pointer,reference,iterator失效;

注:大量的插入和刪除,而不關係隨即訪問使用list。

3、deque

雙端佇列,在堆上分配記憶體,乙個堆儲存幾個元素,而堆之間使用指標連線;

支援操作,在首端和末端插入和刪除元素比較快,在中部插入和刪除則比較慢,像是list和vector的結合;

注:關心插入和刪除並關心隨即訪問折中使用deque。

4、set&multiset

有序集合,使用平衡二叉樹儲存,按照給定的排序規則(預設按less排序)對set中的資料進行排序;

set中不允許有重複元素,multiset中執行有重複元素;

兩者不支援直接訪問元素的操作;

因為是自動排序,查詢元素速度比較快;

不能直接改變元素值,否則會打亂原本正確的順序,必須先下刪除舊元素,再插入新的元素。

5、map&multimap

字典庫,乙個值對映成另乙個值,使用平衡二叉樹儲存,按照給定的排序規則對map中的key值進行排序;

map中的key值不允許重複,multimap中的key允許重複;

根據已知的key值查詢元素比較快;

插入和刪除操作比較慢。

幾種STL排序演算法比較

接著上一回的說,對 stl幾種排序演算法做一比較,比較並不全面,僅僅對 std sort std stable sort c 標準庫qort 和std heap sort 做一比較,因為這是用的最多的,其底層實現已足夠說明日常生活中排序問題所需要考慮的問題。程式 如下 1 2 3 45 6 7 89...

STL中幾種常用容器比較

list支援快速的插入和刪除,但是查詢費時 vector支援快速的查詢,但是插入費時。map查詢的時間複雜度是對數的,這幾乎是最快的,hash也是對數的。如果我自己寫,我也會用二叉檢索樹,它在大部分情況下可以保證對數複雜度,最壞情況是常數複雜度,而std map在任何情況下都可以保證對數複雜度,原因...

STL 幾種容器的比較優缺點

setmap 共同點都是無序的儲存元素,只是通過它提供的藉口對裡面的元素進行訪問,底層都是採用紅黑樹實現 不同點集合,用來判斷某乙個元素是不是在乙個組裡面,使用的比較少 對映,相當於字典,把乙個值對映成另乙個值,可以建立字典 a.優點 b.缺點 是動態陣列,在堆中分配記憶體,元素連續存放,有保留記憶...