沒有C++語言就沒有STL,這么說毫不為過。一般而言,STL作為一個泛型化的數(shù)據(jù)結構和算法庫,并不牽涉具體語言(當然,在C++里,它被稱為STL)。也就是說,如果條件允許,用其他語言也可以實現(xiàn)之。這里所說的條件,主要是指類似于"模板"這樣的語法機制。如果你沒有略過前一節(jié)內容的話,應該可以看到,Alexander Stepanov在選擇C++語言作為實現(xiàn)工具之前,早以采用過多種程序設計語言。但是,為什么最終還是C++幸運的承擔了這個歷史性任務呢?原因不僅在于前述那個條件,還在于C++在某些方面所表現(xiàn)出來的優(yōu)越特性,比如:高效而靈活的指針。但是如果把C++作為一種OOP(Object-Oriented Programming,面向對象程序設計)語言來看待的話(事實上我們一般都是這么認為的,不是嗎?),其功能強大的繼承機制卻沒有給STL的實現(xiàn)幫上多大的忙。在STL的源代碼里,并沒有太多太復雜的繼承關系。繼承的思想,甚而面向對象的思想,還不足以實現(xiàn)類似STL這樣的泛型庫。C++只有在引入了"模板"之后,才直接導致了STL的誕生。這也正是為什么,用其他比C++更純的面向對象語言無法實現(xiàn)泛型思想的一個重要原因。當然,事情總是在變化之中,像Java在這方面,就是一個很好的例子,jdk1.4中已經加入了泛型的特性。 |
|