一個容器就是一些特定類型對象的集合。順序容器(sequential container)為程序員提供了控制元素存儲和訪問順序的能力,這種訪問順序是不依賴元素的值,而是與元素假如容器時的位置相對應。
標準庫中提供了以下順序容器,所有順序容器都提供了快速順序訪問元素的能力,如下。
<table border="1" width="600" cellspacing="1" cellpadding="1" align="center"><caption>順序容器類型</caption><tbody><tr><td><span style="font-size:12px"><strong><span style="color:#cc0000">vector</span></strong><br/></span></td><td><span style="font-size:12px">可變大小數組。支持快速隨機訪問。在尾部之外的位置插入或刪除元素可能很慢。<br/></span></td></tr><tr><td><span style="font-size:12px"><strong><span style="color:#cc0000">deque</span></strong></span></td><td><span style="font-size:12px">雙端隊列。支持快速快速訪問。在頭尾位置插入/刪除速度很快。<br/></span></td></tr><tr><td><span style="font-size:12px"><strong><span style="color:#cc0000">list</span></strong></span></td><td><span style="font-size:12px">雙向鏈表。只支持雙向順序訪問。在list中任何位置進行插入/刪除操作速度都很快。<br/></span></td></tr><tr><td><span style="font-size:12px"><strong><span style="color:#cc0000">forward_list</span></strong></span></td><td><span style="font-size:12px">單向鏈表。只支持單向順序訪問。在鏈表任何位置進行插入/刪除操作速度都很快。<br/></span></td></tr><tr><td><span style="font-size:12px"><strong><span style="color:#cc0000">array</span></strong></span></td><td><span style="font-size:12px">固定大小數組。支持快速隨機訪問,不能添加或刪除元素。</span></td></tr><tr><td><span style="font-size:12px"><strong><span style="color:#cc0000">string</span></strong></span></td><td><span style="font-size:12px">與vector相似的容器,但專門用于保存字符。隨機訪問快,在尾部插入/刪除都很快。</span></td></tr></tbody></table>
以下是一些選擇容器的基本原則(具體視情況而定,這里只是一般情況):
1、通常vector是最好的選擇,除非你有很好的理由選擇其他容器;
2、如果程序有很多小的元素,且空間額外開銷很重要,則不要使用list或forward_list容器;
3、如果程序要求隨機訪問,應使用vector或deque容器;
4、如果程序要在頭尾位置插入/刪除,且不會在中間位置進行插入/刪除操作,則應使用deque容器。
接下來就分篇講解各個容器的操作函數及其他用法。
<table border="1" width="600" cellspacing="1" cellpadding="1" align="center"><caption>鏈接列表</caption><tbody><tr><td><span style="font-size:12px"><strong>STL容器之<span style="color:#cc0000">vector</span></strong><br/></span></td><td><span style="font-size:12px"><a target="_blank" href="http://blog.csdn.net/hujingshuang/article/details/50183881">http://blog.csdn.net/hujingshuang/article/details/50183881</a><br/></span></td></tr><tr><td><span style="font-size:12px"><strong>STL容器之<span style="color:#cc0000">deque</span></strong><br/></span></td><td><span style="font-size:12px"><br/></span></td></tr><tr><td><span style="font-size:12px"><strong>STL容器之<span style="color:#cc0000">list</span></strong><br/></span></td><td><span style="font-size:12px"><br/></span></td></tr><tr><td><span style="font-size:12px"><strong>STL容器之<span style="color:#cc0000">forward_list</span></strong><br/></span></td><td><span style="font-size:12px"><br/></span></td></tr><tr><td><span style="font-size:12px"><strong>STL容器之<span style="color:#cc0000">array</span></strong><br/></span></td><td><span style="font-size:12px"><br/></span></td></tr><tr><td><span style="font-size:12px"><strong>STL容器之<span style="color:#cc0000">string</span></strong></span></td><td>?</td></tr></tbody></table>