标准模板库STL学习总结
1、容器:
容器是用來存儲和組織其他對象的對象。STL容器類的模板在標準頭文件中定義。主要如下所示
①序列容器
基本的序列容器是上面圖中的前三類:
關于三者的優缺點主要是:
A:vector<T>矢量容器:可以隨機訪問容器的內容,在序列末尾添加或刪除對象,但是因為是從尾部刪除,過程非常慢,因為必須移動插入或刪除點后面的所有對象。
矢量容器的操作:(自己以前有個表,貼出來大家看看)
其中的capacity表示容量,size是當前數據個數。矢量容器如果用戶添加一個元素時容量已滿,那么就增加當前容量的一半的內存,比如現在是500了,用戶添加進第501個,那么他會再開拓250個,總共就750個了。所以矢量容器當你添加數據量很大的時候,需要注意這一點哦。。。
如果想用迭代器訪問元素是比較簡單的,使用迭代器輸出元素的循環類似如下:
[cpp]?view plaincopy
[cpp]?view plaincopy
排序矢量元素:
對矢量元素的排序可以使用<algorithm>頭文件中定義的sort()函數模板來對一個矢量容器進行排序。但是有幾點要求需要注意
B:deque<T>容器:非常類似vector<T>,且支持相同的操作,但是它還可以在序列開頭添加和刪除。
deque<T>雙端隊列容器與矢量容器基本類似,具有相同的函數成員,但是有點不同的是它支持從兩端插入和刪除數據,所以就有了兩個函數:push_front和pop_front。并且有兩個迭代器變量
[cpp]?view plaincopy
C:list<T>容器是雙向鏈表,因此可以有效的在任何位置添加和刪除。列表的缺點是不能隨機訪問內容,要想訪問內容必須在列表的內部從頭開始便利內容,或者從尾部開始。
②關聯容器
map<K, T>映射容器:K表示鍵,T表示對象,根據特定的鍵映射到對象,可以進行快速的檢索。
有關它的創建以及查找的操作作如下總結
[cpp]?view plaincopy
2、容器適配器:
容器適配器是包裝了現有的STL容器類的模板類,提供了一個不同的、通常更有限制性的功能。具體如下所示
A:queue<T>隊列容器:通過適配器實現先進先出的存儲機制。我們只能向隊列的末尾添加或從開頭刪除元素。push_back() pop_front()
代碼:queue<string, list<string> > names;(這就是定義的一個適配器)是基于列表創建隊列的。適配器模板的第二個類型形參指定要使用的底層序列容器,主要的操作如下
B:priority_queue<T>優先級隊列容器:是一個隊列,它的頂部總是具有最大或最高優先級。優先級隊列容器與隊列容器一個不同點是優先級隊列容器不能訪問隊列后端的元素。
默認情況下,優先級隊列適配器類使用的是矢量容器vector<T>,當然可以選擇指定不同的序列容器作為基礎,并選擇一個備用函數對象來確定元素的優先級代碼如下
[cpp]?view plaincopyC:stack<T>堆棧容器:其適配器模板在<stack>頭文件中定義,默認情況下基于deque<T>容器實現向下推棧,即后進先出機制。只能訪問最近剛剛進去的對象
[cpp]?view plaincopy
基本操作如下:
3、迭代器:
具體它的意思還沒怎么看明白,書上介紹迭代器的行為與指針類似,這里做個標記,看看后面的例子再給出具體的解釋
具體分為三個部分:輸入流迭代器、插入迭代器和輸出流迭代器。
、
看這一章的內容看的我有點抑郁了都,摘段課本介紹的內容,還是可以幫助理解的
<iterator>頭文件中定義了迭代器的幾個模板:①流迭代器作為指向輸入或輸出流的指針,他們可以用來在流和任何使用迭代器或目的地之間傳輸數據。②插入迭代器可以將數據傳輸給一個基本序列容器。頭文件中定義了兩個流迭代器模板:istream_iterator<T>用于輸入流,ostream_iterator<T>用于輸出流。T表示從流中提取數據或寫到流中的對象的類型。頭文件還定義了三個插入模板:insert<T>, back_insert<T>和front_inset<T>。其中T也是指代序列容器中數據的類型。
輸入流迭代器用下面的程序來說明下,可見具體注釋
[cpp]?view plaincopy
輸出結果:
耽誤時間太多。以后再寫吧
4、算法:
算法是操作迭代器提供的一組對象的STL函數模板,對對象的一個操作,可以與前面的容器迭代器結合起來看。如下圖介紹
5、函數對象:
函數對象是重載()運算符的類類型的對象。就是實現operator()()函數。
函數對象模板在<functional>頭文件中定義,必要時我們也可以定義自己的函數對象。做個標記,等有具體實例來進行進一步的解釋。
6、函數適配器:
函數適配器是允許合并函數對象以產生一個更復雜的函數對象的函數模板。
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的标准模板库STL学习总结的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: xshell十大技巧
- 下一篇: _WIN32_WCE有什么用