• <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)模板庫,是一個(gè)具有工業(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)層次看,整個(gè)STL是以一種類型參數(shù)化(type parameterized)的方式實(shí)現(xiàn)的,這種方式基于一個(gè)在早先C++標(biāo)準(zhǔn)中沒有出現(xiàn)的語言特性--模板(template)。如果查閱任何一個(gè)版本的STL源代碼,你就會(huì)發(fā)現(xiàn),模板作為構(gòu)成整個(gè)STL的基石是一件千真萬確的事情。
            在STL的源代碼里,并沒有太多太復(fù)雜的繼承關(guān)系。繼承的思想,甚而面向?qū)ο蟮乃枷耄€不足以實(shí)現(xiàn)類似STL這樣的泛型庫。C++只有在引入了"模板"之后,才直接導(dǎo)致了STL的誕生。這也正是為什么,用其他比C++更純的面向?qū)ο笳Z言無法實(shí)現(xiàn)泛型思想的一個(gè)重要原因。當(dāng)然,事情總是在變化之中,像Java在這方面,就是一個(gè)很好的例子,jdk1.4中已經(jīng)加入了泛型的特性。
            1.3.2 STL和C++標(biāo)準(zhǔn)函數(shù)庫

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

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

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

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

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

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

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

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

              輸入/輸出(input/output)部分,就是經(jīng)過模板化了的原有標(biāo)準(zhǔn)庫中的iostream部分,它提供了對(duì)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) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C++
            久久午夜无码鲁丝片| 蜜桃麻豆www久久国产精品| 久久久无码精品午夜| 四虎国产精品免费久久久| 九九精品99久久久香蕉| 精品一区二区久久| 狠狠色丁香婷综合久久| 国产成人精品久久亚洲高清不卡| 久久国产精品久久精品国产| 精品久久久久久国产| 国产精品久久久久乳精品爆| 新狼窝色AV性久久久久久| 男女久久久国产一区二区三区| 久久久精品人妻一区二区三区蜜桃| 日韩精品久久无码中文字幕| 国产精品欧美久久久天天影视| 精品精品国产自在久久高清| 久久精品女人天堂AV麻| 久久久午夜精品| 久久久无码人妻精品无码| 精品久久久久久国产| 伊人久久五月天| www.久久热| 久久综合偷偷噜噜噜色| 国产精品一区二区久久国产| 国产成人综合久久久久久| 久久午夜无码鲁丝片秋霞| 99久久综合狠狠综合久久止| 国产日韩欧美久久| 一本一道久久综合狠狠老 | 久久只这里是精品66| 久久w5ww成w人免费| 久久精品无码av| 久久免费的精品国产V∧| 久久青青草原亚洲av无码| 国产三级久久久精品麻豆三级| 国产成人久久精品麻豆一区| 亚洲精品无码久久久久| 一极黄色视频久久网站| 精品国产91久久久久久久a| 亚洲中文字幕久久精品无码APP|