c++11 順序容器概括(1)

來源:互聯網
上載者:User

標籤:

第一篇博文,希望不是最後一篇。o(∩_∩)o 哈哈

接下來幾篇博文會由淺到深地介紹 STL 超好用的順序容器。

 

  • 容器:  就是一些特定類型對象的集合。

 

  •  順序容器:  定義:順序容器是容器的一類。該類容器中,對象(元素)在 容器中的位置 與加入容器的順序相對應,不依賴元素的值。

              注意:順序容器幾乎可以儲存任意類型的元素,但可能限制元素容器操作。詳情請看下篇博文。

 

  •  所有順序容器公用的 特點 :  所以順序容器都提供了快速順序訪問元素的能力。

順序容器的類型

vector(常用) 1.可變大小單向尾部數組 2.支援快速隨機訪問 3.不在後面插入刪除可能速度慢
deque 1.可變大小雙向隊列 2.支援快速隨機訪問  3.在頭尾插入刪除很快
list 1.可變大小雙向鏈表 2.只支援順序訪問 3.在任何位置插入刪除很快
forward_list(c++11) 1.可變大小單向頭部鏈表 2.只支援順序訪問 3.在任何位置插入刪除很快
array(c++11) 1.固定大小數組 2.支援快速隨機訪問  3.沒插入刪除但可以賦值
string

1.和vector很像,特例化,專門用來存字元 如:‘a‘,‘b‘

                           說明:   順序: 1.元素儲存在 連續 的記憶體空間中,用下標尋找很快。

                  但不在 開口地方(開口:vector/string 在尾部,deque 在頭尾) 插入刪除(array 一邊玩去)會很慢。

                   2.用迭代器訪問時,支援算術運算子。如: 

1 std::vector<int>::iterator it = v.begin();2 it = it +2;

 

             隨機: 1.要訪問一個元素,需要訪問整個容器。但插入刪除(array 你又來)很快。

                 2.用迭代器訪問時,不支援算術運算子,但支援自增自減。如:

1 std::list<int>::iterator it = v.begin();2 it = it +2; //錯誤3 it++;4 it++;

 

  • 有關 c++11 標準容器:

array: 設計目的:更安全,更容易使用數群組類型。

    但是 大小固定(安全嘛),所以不支援任何改變容器大小的操作。

forward_list:設計目的:達到的效能 與 我們寫的最好的單向鏈表的效能 相當。

       特別:沒有 size 操作。對其他容器來說,size 操作保證是常量時間的操作(包括list)

 

  • 選擇順序容器的原則:

1.  vertor 是最好的選擇,除非你有更好的選擇。

2.  有很多小元素,空間開銷重要。不要用 list  和 forward_list。

3.  要隨機訪問:選擇 vector 和 deque

4.  要求中間插入刪除:list 和 forward_list

5.  要求奇葩,如:要在中間插,然後要隨機訪問。

         可以用各種方法解決:a. list 存 然後 copy 到 vector。

                   b. 直接用 vector 尾部插入,再用 STL 的 sort 排序到中間

                   c.....

tips: 對於公用操作(如建模板的操作),用迭代器,不使用下標,避免隨機訪問的可能。

 

 

2015-04-15

 

c++11 順序容器概括(1)

聯繫我們

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