[STL基礎]順序容器

來源:互聯網
上載者:User
文章目錄
  • vector
  • list
  • deque
容器

同一種類型對象的集合。這些容器的共有成員函數:empty()判斷容器中是否有元素,max_size()容器中最多能裝多少元素,swap()交換兩個容器的內容。

比較兩個容器大小的運算子:=,<,<=,>,>=,==,!=

  • 1.若兩容器長度相同、所有元素相等,則兩個容器就相等,否則為不等。
  • 2.若兩容器長度不同,但較短容器中所有元素都等於較長容器中對應的元素,則較短容器小於另一個容器。
  • 3.若兩個容器均不是對方的子序列,則取決於所比較的第一個不等的元素)
線性表

在實際應用中,線性表都是以字串string,數組array,棧stack,隊列queue,優先隊列priority_queue,向量vector,列表list,雙向隊列deque等特殊線性表的形式來使用的。根據儲存方式可分為順序表,鏈表;鏈表又分為單鏈表,雙鏈表,迴圈鏈表。

順序容器(vector,list,deque)

元素排列次序與元素值無關,而是由元素添加到容器裡的順序決定的。

  • 1.定義賦值,它們的定義賦值assign及用法完全相同。
  • 2.都有返回表頭元素表尾元素front(),back(),對於雙向鏈表list和雙向隊列deque來說也只有一個表頭和一個表尾,這裡的雙向是對元素可以雙向添加刪除而言的。
  • 3.增加刪除元素,都提供了在表尾增加刪除元素方法push_back(),pop_back(),在任意位置增加刪除元素方法insert(),erase(),全部刪除元素clear()。
  • 4.返回iterator和reverse_iterator 返回指向表頭元素的指標begin(),返回表尾元素下一個位置end(),返回指向表尾元素的指標rbegin(),返回表頭元素前一個位置rend()。
  • 5.其他 擷取長度size(),重設長度resize(),返回最大長度max_size(),兩個容器互換swap(),判斷是否為空白empty()
vector

向量vector就是動態數組。順序儲存(說明可以用索引值,at()來進行元素訪問,且其iterator可以+-n),連續儲存元素。比list和deque多提供了擷取容量capacity(),設定最小容量reserve()

list

列表list是一個雙向鏈表。鏈式儲存(不可以用索引值來進行訪問,且其iterator不可以+-n),由節點群組成的雙向鏈表,每個節點包含著一個元素。由於是雙向鏈表,所以比vector多提供了在表頭增加刪除函數push_front(),pop_front(),此外比vector和deque多提供了排序函數sort(),隊列合并merge()(注意:合并前需要排序),接合函數splice(),去重函數unique(),刪除元素函數remove(),remove_if()

deque

雙向隊列deque。順序儲存(說明可以用索引值,at()來進行元素訪問,且其iterator可以+-n),連續儲存指向不同元素的指標所組成的數組。由於是雙向隊列,所以比vector多提供了在表頭增加刪除函數push_front(),pop_front(),此外比vector少提供了逆序函數reverse()

選擇容器類型的法則

如果程式要求隨機訪問元素,則應使用 vector 或 deque 容器。
如果程式必須在容器的中間位置插入或刪除元素,則應採用 list 容器。
如果程式不是在容器的中間位置,而是在容器首部或尾部插入或刪除元素,則應採用 deque 容器。
如果只需在讀取輸入時在容器的中間位置插入元素,然後需要隨機訪問元素,則可考慮在輸入時將元素讀入到一個 list 容器,接著對此容器重新排序,使其適合順序訪問,然後將排序後的 list 容器複製到一個 vector 容器。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.