C++標準模板庫(STL)簡介__C++

來源:互聯網
上載者:User

標準模板庫,是一組模板類和函數,向程式員提供了 : 儲存資訊的容器 訪問儲存資訊的迭代器 操作容器內容的演算法

簡單的來說,就是分為三部分,演算法,迭代器,容器,其中迭代器是演算法和容器之間的橋樑,可以讓程式員可以通過演算法對容器進行操作,而且這些演算法也不是容器相關的,比如說reverse演算法,對於多個容器都可以使用。本篇主要簡單的介紹一下標準模板庫(不包括C++11標準),如果想要系統的學習,還是需要去看相關書籍。 STL容器

容器是用於儲存資料的STL類,容器大概分為2種: 順序容器 關聯容器

順序容器:指的是容器內的資料是按照順序儲存的。順序容器的插入速度較快,但是尋找速度較慢。
順序容器有:vector,deque,list

關聯容器:指的是容器內的資料是按照索引值對來儲存的,或者說是指定的順序來儲存的,就像字典一樣,關聯容器的特點是,插入速度慢,但是讀取速度快。
關聯容器有:set,map,multiset,multimap

有些STL實現也支援hash_set,hash_multiset,hash_map,hash_multimap。這些容器有更好的搜尋效能,搜尋所需要的時間和容器的大小無關。但是,這些容器並不是遵循標準的容器,如果想要應用程式在不同的平台之間能夠移植,還是需要遵循標準的容器。

string雖然操作和容器十分相似,但是由於string不能存取任意的資料類型,所以嚴格來說,還不能被稱為容器。 選擇正確的容器

容器 類型 優點 缺點
std::vector 順序容器 在末尾插入資料快
可以像訪問數組一樣訪問
調整大小時將影響效能
搜尋時間與容器大小成正比
只能在末尾插入資料
std::deque 順序容器 具備vector的所有優點
還可以在頭部插入資料
插入時間也是固定的
有vector的所有缺點
但與vector不同的是,根據規範,deque不需要支援reverse()函數。
std::list 順序容器 在list中間,開頭,結尾插入資料,所需時間都是固定的
將元素從任意位置刪除,所需要的時間也是固定的
插入或者刪除元素後,指向其它元素的迭代器仍然有效
不能像數組那樣用下標進行訪問
搜尋時間比vector要慢,因為list並不是儲存在一塊連續的記憶體空間中
搜尋時間和list容器中的元素個數成正比
std::set 關聯容器 搜尋時間比順序容器快得多 插入時間比順序容器慢
std::multiset 關聯容器 優點與set類似
在需要儲存重複的元素時,可以使用multiset
缺點與set類似
std::map 關聯容器 用於存取索引值對的容器,並根據鍵來排序(map無法根據值來排序)
搜尋速度不和元素個數成正比
set::multimap 關聯容器 可以儲存鍵相同的元素
優點和map類似
缺點與map類似

Detail: map容器是儲存索引值對的,只能按照鍵來排序,如果想要值來排序的話,有幾種解決方案,1,建立一個map容器,將原來map裡的索引值對調換順序儲存到新的map容器中,當然,要保證逆序後的map索引值都是唯一的,否則可以使用multimap。 2,建立一個set或者vector容器,把map裡的每個索引值對儲存到新的set和vector裡,然後自訂排序的函數對象進行排序。 STL迭代器

最簡單的迭代器是指標,給定一個指向數組第一個元素的指標,可以遞增該指標依次訪問數組元素,當然,也可以操作指標所指向的元素。

聯繫我們

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