C++STL概覽

來源:互聯網
上載者:User
引言

C++ STL可以分為標準容器,演算法和函數對象,迭代器和分配器,利用C++標準程式庫,可以大量減少我們的代碼,提高代碼的穩定性和健壯性。

標準容器

C++標準容器分為序列容器和關聯容器,對於序列容器,C++提供的基本序列有

vector 支援隨機訪問,不適合做插入和刪除操作頻繁的情境

list 雙向鏈表,適合做元素的插入和刪除,不是隨機訪問

deque 也是一個雙端序列,但是經過最佳化,其雙端操作效率類似list,隨即訪問效率接近vector。

從它們出發,通過定義適當的借口,產生了

stack 預設用deque實現

queue 預設是deque實現

priority_queue 預設是vector儲存元素,實現最可能是heap

對於關聯容器,C++提供的有:

map 映射

mulitimap 多重新對應,相比map,允許重複的key

set 被看做是一個map,其中的值是無關緊要的

mulitiset 相比set,允許重複的key

bitset 位集合

hash_map 散列映射,通過實現一個散列函數,將容器實現為一個散列表,以減少尋找元素所需要的時間

 

標準容器具體用法可以參考C++線上手冊STL容器:http://www.cplusplus.com/reference/stl/

 

演算法和函數對象

容器本身之所以有用,是因為容器提供了一些基本操作,如確定大小,迭代,複製,排序,尋找等。標準庫提供了許多演算法,服務於容器使用者的最普遍和最基本的需要。

標準庫演算法不過就是60個,每個演算法都描述為一個模板函數或一組模板函數,例如最常用的排序演算法:sort,能以很好的平均效率排序,建議排序都用sort替換C語言的qsort,sort可以更好結合容器。

標準庫演算法和函數對象的教程可以參考C++之父的C++程式設計語言的演算法和函數對象,這一章內容可以教你如何使用標準庫演算法和函數對象。

標準庫演算法的聲明在<algorithm>,函數對象在<functional>裡。

 

標準庫演算法具體用法參考C++線上手冊STL演算法:http://www.cplusplus.com/reference/algorithm/

 

迭代器和分配器

迭代器是串連容器和演算法的紐帶,讓寫演算法的人不必關心各種資料結構的具體細節,而分配器提供了一個映射,將低級的位元組形式的資料模型映射到進階的物件模型。

迭代器是每個程式員都需要關心的概念之一,但是分配器僅僅是一個支援機制,標準庫已經提供了預設的分配器,很少有程式員需要去寫新的分配器。

迭代器在接觸STL容器就會瞭解了,一般迭代器分為正向迭代器,反向迭代器,插入迭代器,帶檢查的迭代器。

至於分配器提供了一套分配和釋放儲存的標準方式,標準庫提供了一個標準分配器,在<memory>裡的標準allocator模板用operator new()分配儲存,所有的標準容器在預設情況下使用它,當然你也可以自己實現一個分配器,容器的實現需要一次次的allocate()或者deallocate()對象,意味著new的大量調用,你可以採用一個固定大小儲存塊的儲存池,可以比常規的更通用的operator new()的效率高一些。

 

總結

學習C++標準程式庫,可以先學會應用標準容器的簡單用法,如vector,map,慢慢熟悉之後,再接觸演算法,也是學習演算法的幾個函數的簡單用法,例如sort,swap等。

學會應用可以學習理論:考慮看下C++之父的C++程式設計語言的標準庫,也可以看更厚的書:C++標準程式庫。

最後,你在工作和編程中,都需要C++容器和演算法的手冊查閱,這些可以參考上面的網址:

C++線上手冊STL容器:http://www.cplusplus.com/reference/stl/

C++線上手冊STL演算法:http://www.cplusplus.com/reference/algorithm/

這裡面詳細介紹了每個容器和演算法的每個函數,幾乎95%都有例子,是很好的參考資料

相關文章

聯繫我們

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