1. 程式人生 > >STL-vector list deque 順序儲存結構要點

STL-vector list deque 順序儲存結構要點

具體使用方法百度一堆,這裡就講講一些要點。

都需要加上需加上using namespace std; 方可直接呼叫。

使用迭代器時,只有list 的迭代器不會輕易的失效,而vector、deque當插入時,迭代器很容易就失效。

vector

vector<int> vec;是一種順序容器,一個能夠存放任意型別的動態陣列。優點:隨機存取[ ]和at(),動態操作push pop,自動調整記憶體。缺點:插入刪除效率低,當動態新增太大,需要拷貝和釋放。.begin() 0位的指標,也就是第一個元素的指標.end() 最後一位的下一個指標,指向空的。傳參和返回值的之後,最好都是從引數裡傳進去引用,這樣保證不出錯,因為vector進行陣列的增大時,會把原資料拷貝到另一個空間,所以有時指標會出錯。刪除元素時並不會釋放空閒的記憶體空間,可用vector<T>(s.begin(),s.end(),swap(s))利用s的內容建立一個臨時物件,再與s交換,則s變為臨時物件,完成後會被析構。替換元素操作一般用vec[1]=9; 或者用迭代器*ite=9; list
list<int> lst1;是stl實現的雙向連結串列,允許快速的插入和刪除,但是隨機訪問比較慢。只有list是非連續儲存。優點:記憶體不連續,插入刪除效率高,可在兩端進行插入。缺點:不能隨機訪問dequedeque<int> deq;是雙開口的連續線性空間優點:可隨機訪問,插入刪除方便,可雙端操作。記憶體分配優於vector,是vector和list的中間值。缺點:佔用記憶體多。