沒有C++語言就沒有STL,這么說毫不為過。一般而言,STL作為一個(gè)泛型化的數(shù)據(jù)結(jié)構(gòu)和算法庫,并不牽涉具體語言(當(dāng)然,在C++里,它被稱為STL)。也就是說,如果條件允許,用其他語言也可以實(shí)現(xiàn)之。這里所說的條件,主要是指類似于"模板"這樣的語法機(jī)制。如果你沒有略過前一節(jié)內(nèi)容的話,應(yīng)該可以看到,Alexander Stepanov在選擇C++語言作為實(shí)現(xiàn)工具之前,早以采用過多種程序設(shè)計(jì)語言。但是,為什么最終還是C++幸運(yùn)的承擔(dān)了這個(gè)歷史性任務(wù)呢?原因不僅在于前述那個(gè)條件,還在于C++在某些方面所表現(xiàn)出來的優(yōu)越特性,比如:高效而靈活的指針。但是如果把C++作為一種OOP(Object-Oriented Programming,面向?qū)ο蟪绦蛟O(shè)計(jì))語言來看待的話(事實(shí)上我們一般都是這么認(rèn)為的,不是嗎?),其功能強(qiáng)大的繼承機(jī)制卻沒有給STL的實(shí)現(xiàn)幫上多大的忙。在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)加入了泛型的特性。 |
|