For investors
股價:
5.36 美元 %For investors
股價:
5.36 美元 %認真做教育 專心促就業(yè)
作為C++(C++培訓 )++標準不可缺少的一部分,STL應該是滲透在C++程序的角角落落里的。STL不是實驗室里的寵兒,也不是程序員桌上的擺設,她的激動人心并非曇花一現(xiàn)。本教程旨在傳播和普及STL的基礎知識,若能借此機會為STL的推廣做些力所能及的事情,到也是件讓人愉快的事情。
初識STL:解答一些疑問
1.1 一個最關心的問題:什么是STL
"什么是STL?",假如你對STL還知之甚少,那么我想,你一定很想知道這個問題的答案,坦率地講,要指望用短短數(shù)言將這個問題闡述清楚,也決非易事。因此,如果你在看完本節(jié)之后還是覺得似懂非懂,大可不必著急,在閱讀了后續(xù)內容之后,相信你對STL的認識,將會愈加清晰、準確和完整。不過,上述這番話聽起來是否有點像是在為自己糟糕的表達能力開脫罪責呢?:)
不知道你是否有過這樣的經(jīng)歷。在你準備著手完成數(shù)據(jù)結構老師所布置的家庭作業(yè)時,或者在你為你所負責的某個軟件項目中添加一項新功能時,你發(fā)現(xiàn)需要用到一個鏈表(List)或者是映射表(Map)之類的東西,但是手頭并沒有現(xiàn)成的代碼。于是在你開始正式考慮程序功能之前,手工實現(xiàn)List或者Map 是不可避免的。于是……,最終你順利完成了任務?;蛟S此時,作為一個具有較高素養(yǎng)的程序員的你還不肯罷休(或者是一個喜歡偷懶的優(yōu)等生:),因為你會想到,如果以后還遇到這樣的情況怎么辦?沒有必要再做一遍同樣的事情吧!
如果說上述這種情形每天都在發(fā)生,或許有點夸張。但是,如果說整個軟件領域里,數(shù)十年來確實都在為了一個目標而奮斗--可復用性(reusability),這看起來似乎并不夸張。從最早的面向過程的函數(shù)庫,到面向對象的程序設計思想,到各種組件技術(如:COM、EJB),到設計模式(design pattern)等等。而STL也在做著類似的事情,同時在它背后蘊涵著一種新的程序設計思想--泛型化設計(generic programming)。
繼續(xù)上面提到的那個例子,假如你把List或者map完好的保留了下來,正在暗自得意。且慢,如果下一回的List里放的不是浮點數(shù)而是整數(shù)呢?如果你所實現(xiàn)的Map在效率上總是令你不太滿意并且有時還會出些bug呢?你該如何面對這些問題?使用STL是一個不錯的選擇,確實如此,STL可以漂亮地解決上面提到的這些問題,盡管你還可以尋求其他方法。
說了半天,到底STL是什么東西呢?
STL(Standard Template Library),即標準模板庫,是一個具有工業(yè)強度的,高效的C++程序庫。它被容納于C++標準程序庫(C++ Standard Library)中,是ANSI/ISO C++標準中最新的也是極具革命性的一部分。該庫包含了諸多在計算機科學領域里所常用的基本數(shù)據(jù)結構和基本算法。為廣大C++程序員們提供了一個可擴展的應用框架,高度體現(xiàn)了軟件的可復用性。這種現(xiàn)象有些類似于Microsoft Visual C++中的MFC(Microsoft Foundation Class Library),或者是Borland C++ Builder中的VCL(Visual Component Library),對于此二者,大家一定不會陌生吧。
從邏輯層次來看,在STL中體現(xiàn)了泛型化程序設計的思想(generic programming),引入了諸多新的名詞,比如像需求(requirements),概念(concept),模型(model),容器(container),算法(algorithmn),迭代子(iterator)等。與OOP(object-oriented programming)中的多態(tài)(polymorphism)一樣,泛型也是一種軟件的復用技術。
從實現(xiàn)層次看,整個STL是以一種類型參數(shù)化(type parameterized)的方式實現(xiàn)的,這種方式基于一個在早先C++標準中沒有出現(xiàn)的語言特性--模板(template)。如果查閱任何一個版本的STL源代碼,你就會發(fā)現(xiàn),模板作為構成整個STL的基石是一件千真萬確的事情。除此之外,還有許多C++的新特性為STL的實現(xiàn)提供了方便。
不知你對這里一下子冒出這么多術語做何感想,希望不會另你不愉快。假如你對它們之中的大多數(shù)不甚了解,敬請放心,在后續(xù)內容中將會對這些名詞逐一論述。正如開頭所提到的。
有趣的是,對于STL還有另外一種解釋--STepanov & Lee,前者是指Alexander Stepanov,STL的創(chuàng)始人;而后者是Meng Lee,她也是使STL得以推行的功臣,第一個STL成品就是他們合作完成的。這一提法源自1995年3月,Dr.Dobb’s Journal特約記者, 著名技術書籍作家Al Stevens對Alexander Stepanov的一篇專訪。
【免責聲明】本文部分系轉載,轉載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負責。如涉及作品內容、版權和其它問題,請在30日內與聯(lián)系我們,我們會予以更改或刪除相關文章,以保證您的權益!