• <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>
            STL(Standard Template Library),即標(biāo)準(zhǔn)模板庫,是一個具有工業(yè)強(qiáng)度的,高效的C++程序庫。它被容納于C++標(biāo)準(zhǔn)程序庫(C++ Standard Library)中,是ANSI/ISO C++標(biāo)準(zhǔn)中最新的也是極具革命性的一部分。該庫包含了諸多在計(jì)算機(jī)科學(xué)領(lǐng)域里所常用的基本數(shù)據(jù)結(jié)構(gòu)基本算法。
            有些類似于Microsoft Visual C++中的MFC(Microsoft Foundation Class Library),或者是Borland C++ Builder中的VCL(Visual Component Library)

            從邏輯層次來看,在STL中體現(xiàn)了泛型化程序設(shè)計(jì)的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。與OOP(object-oriented programming)中的多態(tài)(polymorphism)一樣,泛型也是一種軟件的復(fù)用技術(shù)。
            從實(shí)現(xiàn)層次看,整個STL是以一種類型參數(shù)化(type parameterized)的方式實(shí)現(xiàn)的,這種方式基于一個在早先C++標(biāo)準(zhǔn)中沒有出現(xiàn)的語言特性--模板(template)。如果查閱任何一個版本的STL源代碼,你就會發(fā)現(xiàn),模板作為構(gòu)成整個STL的基石是一件千真萬確的事情。
            在STL的源代碼里,并沒有太多太復(fù)雜的繼承關(guān)系。繼承的思想,甚而面向?qū)ο蟮乃枷耄€不足以實(shí)現(xiàn)類似STL這樣的泛型庫。C++只有在引入了"模板"之后,才直接導(dǎo)致了STL的誕生。這也正是為什么,用其他比C++更純的面向?qū)ο笳Z言無法實(shí)現(xiàn)泛型思想的一個重要原因。當(dāng)然,事情總是在變化之中,像Java在這方面,就是一個很好的例子,jdk1.4中已經(jīng)加入了泛型的特性。
            1.3.2 STL和C++標(biāo)準(zhǔn)函數(shù)庫

              STL是最新的C++標(biāo)準(zhǔn)函數(shù)庫中的一個子集,這個龐大的子集占據(jù)了整個庫的大約80%的分量。而作為在實(shí)現(xiàn)STL過程中扮演關(guān)鍵角色的模板則充斥了幾乎整個C++標(biāo)準(zhǔn)函數(shù)庫。
            它大致包含了如下幾個組件:
            C標(biāo)準(zhǔn)函數(shù)庫,基本保持了與原有C語言程序庫的良好兼容,盡管有些微變化。人們總會忍不住留戀過去的美好歲月,如果你曾經(jīng)是一個C程序員,對這一點(diǎn)一定體會頗深。或許有一點(diǎn)會讓你覺得奇怪,那就是在C++標(biāo)準(zhǔn)庫中存在兩套C的函數(shù)庫,一套是帶有.h擴(kuò)展名的(比如<stdio.h>),而另一套則沒有(比如<cstdio>)。它們確實(shí)沒有太大的不同。
            診斷(diagnostics)部分,提供了用于程序診斷和報(bào)錯的功能,包含了異常處理(exception handling),斷言(assertions),錯誤代碼(error number codes)三種方式。

              通用工具(general utilities)部分,這部分內(nèi)容為C++標(biāo)準(zhǔn)庫的其他部分提供支持,當(dāng)然你也可以在自己的程序中調(diào)用相應(yīng)功能。比如:動態(tài)內(nèi)存管理工具,日期/時(shí)間處理工具。記住,這里的內(nèi)容也已經(jīng)被泛化了(即采用了模板機(jī)制)。

              字符串(string)部分,用來代表和處理文本。它提供了足夠豐富的功能。事實(shí)上,文本是一個string對象,它可以被看作是一個字符序列,字符類型可能是char,或者wchar_t等等。string可以被轉(zhuǎn)換成char*類型,這樣便可以和以前所寫的C/C++代碼和平共處了。因?yàn)槟菚r(shí)侯除了char*,沒有別的。

              國際化(internationalization)部分,作為OOP特性之一的封裝機(jī)制在這里扮演著消除文化和地域差異的角色,采用locale和facet可以為程序提供眾多國際化支持,包括對各種字符集的支持,日期和時(shí)間的表示,數(shù)值和貨幣的處理等等。畢竟,在中國和在美國,人們表示日期的習(xí)慣是不同的。

              容器(containers)部分,STL的一個重要組成部分,涵蓋了許多數(shù)據(jù)結(jié)構(gòu),比如前面曾經(jīng)提到的鏈表,還有:vector(類似于大小可動態(tài)增加的數(shù)組)、queue(隊(duì)列)、stack(堆棧)……。string也可以看作是一個容器,適用于容器的方法同樣也適用于string。現(xiàn)在你可以輕松的完成數(shù)據(jù)結(jié)構(gòu)課程的家庭作業(yè)了。

              算法(algorithms)部分,STL的一個重要組成部分,包含了大約70個通用算法,用于操控各種容器,同時(shí)也可以操控內(nèi)建數(shù)組。比如:find用于在容器中查找等于某個特定值的元素,for_each用于將某個函數(shù)應(yīng)用到容器中的各個元素上,sort用于對容器中的元素排序。所有這些操作都是在保證執(zhí)行效率的前提下進(jìn)行的,所以,如果在你使用了這些算法之后程序變得效率底下,首先一定不要懷疑這些算法本身,仔細(xì)檢查一下程序的其他地方。

              迭代器(iterators)部分,STL的一個重要組成部分,如果沒有迭代器的撮合,容器和算法便無法結(jié)合的如此完美。事實(shí)上,每個容器都有自己的迭代器,只有容器自己才知道如何訪問自己的元素。它有點(diǎn)像指針,算法通過迭代器來定位和操控容器中的元素。

              數(shù)值(numerics)部分,包含了一些數(shù)學(xué)運(yùn)算功能,提供了復(fù)數(shù)運(yùn)算的支持。

              輸入/輸出(input/output)部分,就是經(jīng)過模板化了的原有標(biāo)準(zhǔn)庫中的iostream部分,它提供了對C++程序輸入輸出的基本支持。在功能上保持了與原有iostream的兼容,并且增加了異常處理的機(jī)制,并支持國際化(internationalization)。

              總體上,在C++標(biāo)準(zhǔn)函數(shù)庫中,STL主要包含了容器、算法、迭代器。string也可以算做是STL的一部分。



            圖1:STL和C++標(biāo)準(zhǔn)函數(shù)庫
            Posted on 2006-01-01 12:13 艾凡赫 閱讀(751) 評論(0)  編輯 收藏 引用 所屬分類: C++
            久久久WWW成人免费毛片| 久久精品国产99国产电影网 | 久久天堂AV综合合色蜜桃网| 久久99精品国产麻豆宅宅| 久久久久久久久久久久中文字幕 | 久久婷婷人人澡人人| 四虎国产永久免费久久| 久久午夜电影网| 国内精品久久久久影院优| 久久久久综合国产欧美一区二区| 久久天天婷婷五月俺也去| 国产一级做a爰片久久毛片| 国内精品久久久久影院老司| 国内精品久久久久久野外| 老男人久久青草av高清| 日本久久久精品中文字幕| 亚洲av伊人久久综合密臀性色| 婷婷久久综合九色综合98| 亚洲精品美女久久久久99| 亚洲欧美日韩精品久久亚洲区| 91久久精品电影| 99国产精品久久| 亚洲乱码精品久久久久.. | 久久久久亚洲AV无码麻豆| 综合久久一区二区三区 | 2021国内久久精品| 久久精品国产一区二区| 香蕉久久夜色精品国产小说| 精品国产VA久久久久久久冰 | 国产精品久久永久免费| 无码专区久久综合久中文字幕| 亚洲国产成人乱码精品女人久久久不卡| 亚洲国产精品久久久久| 国产精品久久久久影院色| 久久久久亚洲精品天堂| 精品熟女少妇a∨免费久久| 久久精品国产亚洲AV无码偷窥| 亚洲中文精品久久久久久不卡| 国产精品成人久久久| 亚洲精品乱码久久久久久蜜桃不卡 | 亚洲国产一成人久久精品|