久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

C++的標(biāo)準(zhǔn)模板庫(STL)簡介

 felwell 2018-06-23

  STL(Standard Template Library,標(biāo)準(zhǔn)模板庫)是C++對泛型編程思想的實現(xiàn),,最早是惠普實驗室開發(fā)的,。在被引入C++之前該技術(shù)就已經(jīng)存在了很長的一段時間。后來STL成為ANSI/ISO C++標(biāo)準(zhǔn)的一部分,。各個C++廠商也有各自相應(yīng)的模板庫,,這些庫效率可能很高,但可移植性不一定好,。

  在C++標(biāo)準(zhǔn)中,,STL被組織為下面的17個頭文件:<algorithm>、<deque>,、<functional>,、<iterator>,、<array>,、<vector>,、<list>、<forward_list>,、<map>,、<unordered_map>、<memory>,、<numeric>,、<queue>、<set>,、<unordered_set>,、<stack>和<utility>。

  常用的一般有:algorithm(算法),、container(容器)和iterator(迭代器),。幾乎所有的代碼都采用了模板類和模板函數(shù)的方式,這相比于傳統(tǒng)的由函數(shù)和類組成的庫來說提供了更好的代碼重用機(jī)會,。

1) 算法(algorithm)
  STL提供了大約100個實現(xiàn)算法的模版函數(shù),,算法部分主要由頭文件<algorithm>,<numeric> 和<functional>組成,。
  <algorithm>是所有STL頭文件中最大的一個,,它是由一大堆模板函數(shù)組成的,其中常用到的功能范圍涉及到比較,、交換,、查找、遍歷操作,、復(fù)制,、修改、移除,、反轉(zhuǎn),、排序、合并等等,。
  <numeric>體積很小,,只包括一些簡單數(shù)學(xué)運(yùn)算的模板函數(shù)。
  <functional>中則定義了一些模板類,,用以聲明函數(shù)對象,。

2) 容器(container)(又稱集合collection)
  在實際的開發(fā)過程中,數(shù)據(jù)結(jié)構(gòu)本身的重要性不會遜于操作于數(shù)據(jù)結(jié)構(gòu)的算法的重要性,,當(dāng)程序中存在著對時間要求很高的部分時,,數(shù)據(jù)結(jié)構(gòu)的選擇就顯得更加重要。
  通過設(shè)置一些模版類,,STL容器對最常用的數(shù)據(jù)結(jié)構(gòu)提供了支持,,這些模板的參數(shù)允許指定容器中元素的數(shù)據(jù)類型,,可以將許多重復(fù)而乏味的工作簡化。
如下表:

數(shù)據(jù)結(jié)構(gòu)

 

實現(xiàn)頭文件

向量(vector)

順序性容器

<vector>

列表(list)

順序性容器

<list>

雙隊列(deque)

順序性容器

<deque>

集合(set)

關(guān)聯(lián)容器

<set>

多重集合(multiset)

關(guān)聯(lián)容器

<set>

棧(stack)

容器適配器

<stack>

隊列(queue)

容器適配器

<queue>

優(yōu)先隊列(priority_queue)

容器適配器

<queue>

映射(map)

關(guān)聯(lián)容器

<map>

多重映射(multimap)

關(guān)聯(lián)容器

<map>

 

3) 迭代器(iterator)
  迭代器是一種允許程序員檢查容器內(nèi)元素,,并實現(xiàn)元素遍歷的數(shù)據(jù)類型,。C++標(biāo)準(zhǔn)庫為每一種標(biāo)準(zhǔn)容器定義了一種迭代器類型。迭代器類型提供了比下標(biāo)操作更一般化的方法:所有的標(biāo)準(zhǔn)庫容器都定義了相應(yīng)的迭代器類型,,而只有少數(shù)的容器(比如數(shù)組)支持下標(biāo)操作,。因為迭代器對所有的容器都適用,現(xiàn)代C++程序更傾向于使用迭代器而不是下標(biāo)操作訪問容器元素,。
  迭代器從作用上來說是STL最基本的部分,,迭代器在STL中用來將算法和容器聯(lián)系起來,起著一種黏和劑的作用,。幾乎STL提供的所有算法都是通過迭代器存取元素序列進(jìn)行工作的,,每一個容器都定義了其本身所專有的迭代器,用以存取容器中的元素,。
  迭代器部分主要由頭文件<utility>,<iterator> 和<memory>組成,。<utility>是一個很小的頭文件,它包括了貫穿使用在STL中的幾個模板的聲明,,<iterator>中提供了迭代器使用的許多方法,, <memory>為容器中的元素分配存儲空間,同時也為某些算法執(zhí)行期間產(chǎn)生的臨時對象提供機(jī)制,<memory>中的主要部分是模板類allocator,,它負(fù)責(zé)產(chǎn)生所有容器中的默認(rèn)分配器,。

  個人理解:迭代器其實很好理解,它就好比C語言中的指針和數(shù)組下標(biāo)一樣,,指針和數(shù)組下標(biāo)可以用來遍歷數(shù)組中的元素,,而迭代器可以遍歷容器中的元素。

 


作者:wangduo

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式,、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多