資料介紹
導(dǎo)讀
你已經(jīng)熟悉了STL。你知道怎么建立容器,迭代它們的內(nèi)容,添加刪除元素和應(yīng)用常見算法,比如find和sort。但你并不
滿足,你不能擺脫STL所提供的超過它們能帶來的好處的感覺。應(yīng)該簡(jiǎn)單的任務(wù)并非那樣。應(yīng)該直截了當(dāng)?shù)牟僮鞔_有資
源泄漏或錯(cuò)誤行為。應(yīng)該高效的過程卻需要比你希望給它們的更多的時(shí)間和內(nèi)存。是的,你知道怎么使用STL,但你不
確定你在有效地使用它。
我為你寫了這本書。
在《Effective STL》中,我解釋了怎樣結(jié)合STL組件來在庫(kù)的設(shè)計(jì)得到最大的好處。這樣的信息允許你對(duì)簡(jiǎn)單、直接的問
題開發(fā)簡(jiǎn)單、直接的解決方案,也幫你對(duì)更復(fù)雜的問題設(shè)計(jì)優(yōu)雅的方法。我描述了常見的STL使用錯(cuò)誤,而且向你演示
怎么避開它們。那幫助你躲開閃資源漏、不可移植的代碼和未定義的行為。我討論了優(yōu)化代碼的方法,所以你能使STL
表現(xiàn)得像它應(yīng)該的那樣快速、光滑。
本書里的信息將使你成為一個(gè)更好的STL程序員,它將讓你成為一個(gè)更高產(chǎn)的程序員。而且它將讓你成為一個(gè)更愉快的
程序員,使用STL很有趣,但是有效地使用它更為有趣,這種有趣是它們必須把你拽離鍵盤,因?yàn)槟悴荒芟嘈拍銧?zhēng)擁有
的好時(shí)光。即使對(duì)STL的匆匆一瞥也能發(fā)現(xiàn)它是一個(gè)非常酷的庫(kù),但這份酷比你可能想象的更寬更深。我在本書的一個(gè)
主要目標(biāo)是傳達(dá)給你這個(gè)庫(kù)有多神奇,因?yàn)樵谖?a target='_blank' class='arckwlink_none'>編程的差不多30年里,我從未見過任何像STL的東西。你或許也沒有。
定義、使用和擴(kuò)展STL
沒有“STL”的官方定義,而且當(dāng)人們使用這個(gè)術(shù)語時(shí),不同的人表示的是不同的東西。在本書中,“STL”的意思是
與迭代器合作的C++標(biāo)準(zhǔn)庫(kù)的一部分。那包括標(biāo)準(zhǔn)容器(包括string),iostream庫(kù)的一部分,函數(shù)對(duì)象和算法。它不包
括標(biāo)準(zhǔn)容器適配器(stack、queue和priority_queue)以及bitset和valarray容器,因?yàn)樗鼈內(nèi)狈Φ髦С?。它也不包括?shù)
組。真的,數(shù)組以指針的形式支持迭代器,但數(shù)組是C++語言的一部分,并非庫(kù)。
技術(shù)上,我的STL的定義排除了標(biāo)準(zhǔn)C++庫(kù)的擴(kuò)展,特別是散列容器,單鏈表,rope和多種非標(biāo)準(zhǔn)函數(shù)對(duì)象。雖然如
此,一個(gè)有效的STL程序員需要知道這樣的擴(kuò)展,因此我在合適的地方提到了它們。的確,條款25致力于非標(biāo)準(zhǔn)散列容
器的概述。它們現(xiàn)在不在STL里,但類似它們的東西幾乎肯定將要進(jìn)入標(biāo)準(zhǔn)C++庫(kù)的下一個(gè)版本,而在窺見未來是有價(jià)
值的。
存在STL擴(kuò)展的原因之一是STL是被設(shè)計(jì)為可擴(kuò)展的庫(kù)。不過,在本書里,我關(guān)注于使用STL,而不是給它添加新的組
件。例如,如果你發(fā)現(xiàn),我沒有說多少關(guān)于寫你自己的算法的東西,而且我根本沒有在寫新容器和迭代器上提供指導(dǎo)。
我相信在你著手增加它的能力之前,掌握STL已經(jīng)提供的東西很重要,所以那是我在《Effective STL》里關(guān)注的。當(dāng)你決
定建立你自己STLesque組件時(shí),你將在像Josuttis的《The C++ Standard Library》[3]和Austern的《Generic Programming and
the STL》[4]這樣的書里找到建議。我確實(shí)在這本書里討論的STL擴(kuò)展的一個(gè)方面是寫你自己的函數(shù)對(duì)象。你不可能在不
知道怎么寫自己的函數(shù)對(duì)象的情況下有效地使用STL,所以我為這個(gè)主題投入了整整一章(第6章)。
STL和標(biāo)準(zhǔn)
我經(jīng)常提及C++標(biāo)準(zhǔn),因?yàn)椤禘ffective STL》專注于可移植的,與標(biāo)準(zhǔn)一致的C++。理論上,我在這本書里演示的一切都
可以用于每個(gè)C++實(shí)現(xiàn)。實(shí)際上,那不是真的。編譯器的缺陷和STL實(shí)現(xiàn)湊合成防止一些有效的代碼編譯或表現(xiàn)出它們
應(yīng)該有的行為。那是很常見的情況,我描述了這些問題,而且解釋了你應(yīng)該怎么變通地解決他們。
有時(shí)候,最容易的變通辦法是使用另一個(gè)STL實(shí)現(xiàn)。附錄B給一個(gè)這種情況的例子。實(shí)際上,STL用得越多,編譯器和庫(kù)
實(shí)現(xiàn)的區(qū)別就越重要。程序員在設(shè)法讓合法的代碼編譯時(shí)遇到困難,他們通常責(zé)備他們的編譯器,但對(duì)于STL,編譯器
可能是好的,而STL實(shí)現(xiàn)是不良的。為了強(qiáng)調(diào)你得依賴編譯器和庫(kù)實(shí)現(xiàn)的事實(shí),我使用你的STL平臺(tái)。一個(gè)STL平臺(tái)是一
個(gè)特定編譯器和一個(gè)標(biāo)準(zhǔn)模板庫(kù)特定實(shí)現(xiàn)的組合。在本書里,如果我提及一個(gè)編譯器問題,你能確信我意思是編譯器有
問題。但是,如果我說你的STL平臺(tái)有問題,你應(yīng)該理解為“可能是編譯器缺陷,可能是庫(kù)缺陷,或許都有”。
我一般提及你的“編譯器們”——復(fù)數(shù)。那是我長(zhǎng)期相信你通過確保代碼可以在多于一個(gè)的編譯器上工作的方法來改進(jìn)
你的代碼質(zhì)量(特別是移植性)的產(chǎn)物。此外,使用多個(gè)編譯器一般可以簡(jiǎn)化拆解由STL的使用不當(dāng)造成的錯(cuò)誤信息難
題。(條款49致力于解碼此類消息的方法。)
關(guān)于與標(biāo)準(zhǔn)一致的代碼,我強(qiáng)調(diào)的另一個(gè)方面是你應(yīng)該避免構(gòu)造未定義行為。這樣的構(gòu)造可能在運(yùn)行期做任何事情。不
幸的是,這意味著它們可能正好做了你想要的,而那會(huì)導(dǎo)致一種錯(cuò)誤的安全感。太多程序員以為未定義行為總會(huì)導(dǎo)致一
個(gè)明顯的問題,例如,一個(gè)分段錯(cuò)誤或其他災(zāi)難性的錯(cuò)誤。未定義行為的結(jié)果實(shí)際上更為狡猾,例如,破壞極少引用的
數(shù)據(jù)。它們也可以通過程序運(yùn)行。我發(fā)現(xiàn)一個(gè)未定義行為的好定義是“為我工作,為你工作,在開發(fā)和QA期間工作,
但在你最重要的用戶面前爆炸了”。避免未定義行為很重要,所以我指出了它會(huì)出現(xiàn)的通常情況。你應(yīng)該訓(xùn)練你自己警
惕這樣的情況。
- STM32固件庫(kù)使用手冊(cè)中文版以及技術(shù)手冊(cè)中文版pdf 0次下載
- 實(shí)用開關(guān)電源設(shè)計(jì)-中文版pdf 0次下載
- FP8202規(guī)格書中文版pdf 0次下載
- FP7126規(guī)格書中文版pdf 0次下載
- FP6151規(guī)格書中文版pdf 0次下載
- FP6150B規(guī)格書中文版pdf 0次下載
- S7-STL中文編程手冊(cè) 28次下載
- Autocad試用版官方中文版免費(fèi)下載 23次下載
- 1965fb電源IC資料-中文版下載.pdf 0次下載
- PROE中文版免費(fèi)下載 0次下載
- Proteus中文版免費(fèi)下載 0次下載
- Effective Java中文版 0次下載
- 經(jīng)典中文版More+Effective+C++ 35個(gè)改善編程與設(shè)計(jì)的有效方法 0次下載
- 中文版第三版Effective C++ 高清PDF 0次下載
- effective stl pdf
- 片上軟件需要什么安全完整性? 457次閱讀
- 博途使用STL中的MOVE指令 6761次閱讀
- C++ STL基本概念是什么 1407次閱讀
- 什么是STL? 4372次閱讀
- C++之STL庫(kù)中的容器 1243次閱讀
- STL的概述 1431次閱讀
- PLC梯形圖轉(zhuǎn)換成STL程序 4496次閱讀
- Boost庫(kù)是什么?C++ Boost的詳細(xì)資料簡(jiǎn)介 9380次閱讀
- WP_492 出色的計(jì)算密集型系統(tǒng)開發(fā)平臺(tái) 4482次閱讀
- keil uvision2中文版|keil uvision2漢化補(bǔ)丁下載 1w次閱讀
- adc0809中文資料下載 adc0809引腳圖封裝及應(yīng)用電路 2w次閱讀
- keil uvision2下載|keil uvision2漢化免費(fèi)版下載 1.1w次閱讀
- AUTOCAD2009免費(fèi)下載中文版 CAD2009簡(jiǎn)體中文下載及安裝方法 1.3w次閱讀
- MAX232引腳圖功能應(yīng)用電路 MAX232中文資料PDF數(shù)據(jù)手冊(cè)下載 1.5w次閱讀
- PLC控制系統(tǒng)設(shè)計(jì)教程: 加熱爐送料系統(tǒng)——仿STL指令的編程方式梯形圖舉例 2780次閱讀
下載排行
本周
- 1電子電路原理第七版PDF電子教材免費(fèi)下載
- 0.00 MB | 1490次下載 | 免費(fèi)
- 2單片機(jī)典型實(shí)例介紹
- 18.19 MB | 93次下載 | 1 積分
- 3S7-200PLC編程實(shí)例詳細(xì)資料
- 1.17 MB | 27次下載 | 1 積分
- 4筆記本電腦主板的元件識(shí)別和講解說明
- 4.28 MB | 18次下載 | 4 積分
- 5開關(guān)電源原理及各功能電路詳解
- 0.38 MB | 10次下載 | 免費(fèi)
- 6基于AT89C2051/4051單片機(jī)編程器的實(shí)驗(yàn)
- 0.11 MB | 4次下載 | 免費(fèi)
- 7基于單片機(jī)和 SG3525的程控開關(guān)電源設(shè)計(jì)
- 0.23 MB | 3次下載 | 免費(fèi)
- 8基于單片機(jī)的紅外風(fēng)扇遙控
- 0.23 MB | 3次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 2PADS 9.0 2009最新版 -下載
- 0.00 MB | 66304次下載 | 免費(fèi)
- 3protel99下載protel99軟件下載(中文版)
- 0.00 MB | 51209次下載 | 免費(fèi)
- 4LabView 8.0 專業(yè)版下載 (3CD完整版)
- 0.00 MB | 51043次下載 | 免費(fèi)
- 5555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33562次下載 | 免費(fèi)
- 6接口電路圖大全
- 未知 | 30320次下載 | 免費(fèi)
- 7Multisim 10下載Multisim 10 中文版
- 0.00 MB | 28588次下載 | 免費(fèi)
- 8開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21539次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935053次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537791次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234313次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191183次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183277次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138039次下載 | 免費(fèi)
評(píng)論