list用法簡介
list是一個雙端鏈表,所以相對vector而言,優點是刪除和插入更快速.但缺點是隨機訪問資料效率變低了.
list的很多用法和vector類似.這裡主要講下它不同的一些用法.
先隨便定義一個list對象
list<int> lt;
lt.push_back(88);
list<int> lt2( lt );
1.不支援隨機訪問
由於list隨機訪問相對於vector而言太慢了,所以乾脆不提供該功能.所以不能lt.at(0)或者lt[0]這樣用了.
2.支援在頭和尾部添加與刪除元素
vector中push_back與pop_back都只是針對尾部元素的添加與刪除.而list除了仍舊有這兩函數還多出另外兩個.
lt.push_front( 11); //在頭部添加元素
lt.pop_front(); //在頭部刪除元素.
3.合并兩個鏈表
lt.merge(lt2); //表示把lt與lt2合并成一個鏈表,也就是把lt2的元素移到lt中,並且預設是升序的.而lt2則變為空白
4.刪除匹配元素
lt.remove( 11); //刪除鏈表中值為11的所有元素
5.反轉鏈表
lt.reverse(); //把鏈表中元素的順序反過來
6.順序(預設升序)
lt.sort();
7.刪除相鄰重複元素
lt.unique(); //要先lt.sort()排序下.排序後相同元素肯定變相鄰了
deque 用法簡介
deque也是採用動態數組來表示,但是記憶體管理方式跟vector有點不一樣
所以vector中有reserve, capacity這兩函數,而deque就沒有.
deque可以說是結合了vector和list的一些功能.
可以隨機訪問資料(vector有,而list沒有的功能)
可以添加和刪除頭部元素(list有而vector沒有的功能)
deque<int> de;
de.push_back(88);
de.push_front(11);
int num = de.at(0);
int ret = de[0];
de.pop_front();
de.pop_back();
vector , list , deque比較
1.vector隨機訪問資料效能最好.
所以如果經常訪問資料,但除了在尾部外很少在其他地方添加刪除元素.則用vector.
2.list隨機添加刪除元素效能最好.
所以如果經常添加刪除資料,而較少隨機訪問資料,則用list.
3.deque可隨機訪問元素,也可在頭部和尾部添加刪除元素
deque跟vector一樣可以隨機訪問資料,但效能不如vector好.另外deque比vector多出的功能是可以頭部添加刪除元素.當然刪除添加元素效能也不如list好
所以針對又想隨機訪問資料,又需要在頭部添加刪除元素的則用deque.