vector list deque比較

來源:互聯網
上載者:User
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.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.