• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            面對現實,超越自己
            逆水行舟,不進則退
            posts - 269,comments - 32,trackbacks - 0

            STL介紹
                C++ STL (Standard Template Library
            標準模板庫) 是通用類模板和算法的集合,它提供給程序員一些標準的數據結構的實現如 queues(隊列), lists(鏈表), stacks(). 該庫包含了諸多在計算機科學領域里所常用的基本數據結構和基本算法。提供了一個可擴展的應用框架,高度體現了軟件的可復用性。
            從邏輯層次來看,在STL中體現了泛型化程序設計的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。與OOP(object-oriented programming)中的多態(polymorphism)一樣,泛型也是一種軟件的復用技術。
            從實現層次看,整個STL是以一種類型參數化(type parameterized)的方式實現的,這種方式基于一個在早先C++標準中沒有出現的語言特性--模板(template)。
            C++ STL 提供給程序員以下三類數據結構的實現
            標準容器類
             
            順序性容器
               vector 從后面快速的插入與刪除,直接訪問任何元素
               deque 從前面或后面快速的插入與刪除,直接訪問任何元素
               list 雙鏈表,從任何地方快速插入與刪除
             
            三者比較:
               vector 是一段連續的內存塊,而deque 是多個連續的內存塊, list 是所有數據元素分開保存,可以是任何兩個元素沒有連續。vector 的查詢性能最好,并且在末端增加數據也很好,除非它重新申請內存段;適合高效地隨機存儲。list 是一個鏈表,任何一個元素都可以是不連續的,但它都有兩個指向上一元素和下一元素的指針。所以它對插入、刪除元素性能是最好的,而查詢性能非常差;適合大量地插入和刪除操作而不關心隨機存取的需求。deque 是介于兩者之間,它兼顧了數組和鏈表的優點,它是分塊的鏈表和多個數組的聯合。所以它有被list好的查詢性能,有被vector好的插入、刪除性能。 如果你需要隨即存取又關心兩端數據的插入和刪除,那么deque是最佳之選。

            關聯容器
               set 快速查找,不允許重復值
               multiset 快速查找,允許重復值
               map 一對多映射,基于關鍵字快速查找,不允許重復值
               multimap 一對多映射,基于關鍵字快速查找,允許重復值

               關聯容器(Associative Container)提供了快速檢索基于關鍵詞(Key)的數據的能力。和序列容器(vector、list、deque)一樣,關聯容器用來存儲數據,而且設計關聯容器時考慮到了優化數據檢索的意圖 --- 通過關鍵詞(Key)作為標識把單一的數據記錄組織到特定的結構中(如tree)。STL 提供了不同的關聯容器:集合(set)、多元集合(multiset)、映射(map)、多元映射(multimap)。set 和map 支持唯一關鍵詞(unique key),就是對每個KEY,最多只保存一個元素(數據
            記錄)。multiset 和multimap 則支持相同關鍵詞(equal key),這樣可有很多個元素可以用同一個KEY 進行存儲。set(multiset)和map(multimap)之間的區別在于set(multiset)中的存儲數據內含了KEY 表達式;而map(multimap)則將Key 表達式和對應的數據分開存放。

            容器適配器
               stack 后進先出
               queue 先進先出
               priority_queue 最高優先級元素總是第一個出列

               STL 中包含三種適配器:棧stack 、隊列queue 和優先級priority_queue 。適配器是容器的接口,它本身不能直接保存元素,它保存元素的機制是調用另一種順序容器去實現,即可以把適配器看作“它保存一個容器,這個容器再保存所有元素”。
               STL 中提供的三種適配器可以由某一種順序容器去實現。默認下stack 和queue 基于deque 容器實現,priority_queue 則基于vector 容器實現。當然在創建一個適配器時也可以指定具體的實現容器,創建適配器時在第二個參數上指定具體的順序容器可以覆蓋適配器的默認實現。由于適配器的特點,一個適配器不是可以由任一個順序容器都可以實現的。
               棧stack 的特點是后進先出,所以它關聯的基本容器可以是任意一種順序容器,因為這些容器類型結構都可以提供棧的操作有求,它們都提供了push_back 、pop_back 和back 操作。
               隊列queue 的特點是先進先出,適配器要求其關聯的基礎容器必須提供pop_front 操作,因此其不能建立在vector 容器上。
            posted on 2012-06-04 08:52 王海光 閱讀(900) 評論(0)  編輯 收藏 引用 所屬分類: STL
            国产激情久久久久影院老熟女免费 | 国内精品久久久久久99| 久久天天躁狠狠躁夜夜avapp| 一本一本久久aa综合精品| 成人国内精品久久久久一区| 国产精品成人精品久久久| 精品久久久一二三区| 久久精品国产亚洲网站| 久久久久免费精品国产| 99久久精品免费看国产| 无码专区久久综合久中文字幕| 久久香蕉国产线看观看99| 久久亚洲sm情趣捆绑调教| 久久99精品国产麻豆不卡| 亚洲国产精品18久久久久久| 久久精品国产精品亚洲下载| 麻豆AV一区二区三区久久 | 久久影视综合亚洲| 久久亚洲私人国产精品vA| 性做久久久久久久久久久| 欧美精品一本久久男人的天堂| 国产精品久久久久久五月尺| 精品久久人人做人人爽综合| 99久久精品国产麻豆| 亚洲欧洲日产国码无码久久99| 四虎影视久久久免费| 国产精品欧美久久久久无广告| 久久最近最新中文字幕大全 | 亚洲国产精品无码成人片久久| 人妻系列无码专区久久五月天| 国产精品美女久久久网AV| 99久久婷婷国产一区二区| 日本福利片国产午夜久久| 亚洲国产精品久久久久婷婷软件| 国产成人久久AV免费| 久久亚洲国产午夜精品理论片| 99久久精品国内| 久久综合综合久久97色| 国产午夜精品理论片久久| 久久久久久毛片免费看| 日韩精品无码久久一区二区三|