資料介紹
導讀
你已經熟悉了STL。你知道怎么建立容器,迭代它們的內容,添加刪除元素和應用常見算法,比如find和sort。但你并不
滿足,你不能擺脫STL所提供的超過它們能帶來的好處的感覺。應該簡單的任務并非那樣。應該直截了當的操作確有資
源泄漏或錯誤行為。應該高效的過程卻需要比你希望給它們的更多的時間和內存。是的,你知道怎么使用STL,但你不
確定你在有效地使用它。
我為你寫了這本書。
在《Effective STL》中,我解釋了怎樣結合STL組件來在庫的設計得到最大的好處。這樣的信息允許你對簡單、直接的問
題開發簡單、直接的解決方案,也幫你對更復雜的問題設計優雅的方法。我描述了常見的STL使用錯誤,而且向你演示
怎么避開它們。那幫助你躲開閃資源漏、不可移植的代碼和未定義的行為。我討論了優化代碼的方法,所以你能使STL
表現得像它應該的那樣快速、光滑。
本書里的信息將使你成為一個更好的STL程序員,它將讓你成為一個更高產的程序員。而且它將讓你成為一個更愉快的
程序員,使用STL很有趣,但是有效地使用它更為有趣,這種有趣是它們必須把你拽離鍵盤,因為你不能相信你爭擁有
的好時光。即使對STL的匆匆一瞥也能發現它是一個非常酷的庫,但這份酷比你可能想象的更寬更深。我在本書的一個
主要目標是傳達給你這個庫有多神奇,因為在我編程的差不多30年里,我從未見過任何像STL的東西。你或許也沒有。
定義、使用和擴展STL
沒有“STL”的官方定義,而且當人們使用這個術語時,不同的人表示的是不同的東西。在本書中,“STL”的意思是
與迭代器合作的C++標準庫的一部分。那包括標準容器(包括string),iostream庫的一部分,函數對象和算法。它不包
括標準容器適配器(stack、queue和priority_queue)以及bitset和valarray容器,因為它們缺乏迭代器支持。它也不包括數
組。真的,數組以指針的形式支持迭代器,但數組是C++語言的一部分,并非庫。
技術上,我的STL的定義排除了標準C++庫的擴展,特別是散列容器,單鏈表,rope和多種非標準函數對象。雖然如
此,一個有效的STL程序員需要知道這樣的擴展,因此我在合適的地方提到了它們。的確,條款25致力于非標準散列容
器的概述。它們現在不在STL里,但類似它們的東西幾乎肯定將要進入標準C++庫的下一個版本,而在窺見未來是有價
值的。
存在STL擴展的原因之一是STL是被設計為可擴展的庫。不過,在本書里,我關注于使用STL,而不是給它添加新的組
件。例如,如果你發現,我沒有說多少關于寫你自己的算法的東西,而且我根本沒有在寫新容器和迭代器上提供指導。
我相信在你著手增加它的能力之前,掌握STL已經提供的東西很重要,所以那是我在《Effective STL》里關注的。當你決
定建立你自己STLesque組件時,你將在像Josuttis的《The C++ Standard Library》[3]和Austern的《Generic Programming and
the STL》[4]這樣的書里找到建議。我確實在這本書里討論的STL擴展的一個方面是寫你自己的函數對象。你不可能在不
知道怎么寫自己的函數對象的情況下有效地使用STL,所以我為這個主題投入了整整一章(第6章)。
STL和標準
我經常提及C++標準,因為《Effective STL》專注于可移植的,與標準一致的C++。理論上,我在這本書里演示的一切都
可以用于每個C++實現。實際上,那不是真的。編譯器的缺陷和STL實現湊合成防止一些有效的代碼編譯或表現出它們
應該有的行為。那是很常見的情況,我描述了這些問題,而且解釋了你應該怎么變通地解決他們。
有時候,最容易的變通辦法是使用另一個STL實現。附錄B給一個這種情況的例子。實際上,STL用得越多,編譯器和庫
實現的區別就越重要。程序員在設法讓合法的代碼編譯時遇到困難,他們通常責備他們的編譯器,但對于STL,編譯器
可能是好的,而STL實現是不良的。為了強調你得依賴編譯器和庫實現的事實,我使用你的STL平臺。一個STL平臺是一
個特定編譯器和一個標準模板庫特定實現的組合。在本書里,如果我提及一個編譯器問題,你能確信我意思是編譯器有
問題。但是,如果我說你的STL平臺有問題,你應該理解為“可能是編譯器缺陷,可能是庫缺陷,或許都有”。
我一般提及你的“編譯器們”——復數。那是我長期相信你通過確保代碼可以在多于一個的編譯器上工作的方法來改進
你的代碼質量(特別是移植性)的產物。此外,使用多個編譯器一般可以簡化拆解由STL的使用不當造成的錯誤信息難
題。(條款49致力于解碼此類消息的方法。)
關于與標準一致的代碼,我強調的另一個方面是你應該避免構造未定義行為。這樣的構造可能在運行期做任何事情。不
幸的是,這意味著它們可能正好做了你想要的,而那會導致一種錯誤的安全感。太多程序員以為未定義行為總會導致一
個明顯的問題,例如,一個分段錯誤或其他災難性的錯誤。未定義行為的結果實際上更為狡猾,例如,破壞極少引用的
數據。它們也可以通過程序運行。我發現一個未定義行為的好定義是“為我工作,為你工作,在開發和QA期間工作,
但在你最重要的用戶面前爆炸了”。避免未定義行為很重要,所以我指出了它會出現的通常情況。你應該訓練你自己警
惕這樣的情況。
- STM32固件庫使用手冊中文版以及技術手冊中文版pdf 0次下載
- 實用開關電源設計-中文版pdf 0次下載
- FP8202規格書中文版pdf 0次下載
- FP6188規格書中文版pdf 0次下載
- FP6151規格書中文版pdf 0次下載
- FP6150B規格書中文版pdf 0次下載
- S7-STL中文編程手冊 27次下載
- Autocad試用版官方中文版免費下載 23次下載
- 1965fb電源IC資料-中文版下載.pdf 0次下載
- PROE中文版免費下載 0次下載
- Proteus中文版免費下載 0次下載
- Effective Java中文版 0次下載
- 經典中文版More+Effective+C++ 35個改善編程與設計的有效方法 0次下載
- 中文版第三版Effective C++ 高清PDF 0次下載
- effective stl pdf
- 片上軟件需要什么安全完整性? 367次閱讀
- 博途使用STL中的MOVE指令 5653次閱讀
- C++ STL基本概念是什么 1222次閱讀
- 什么是STL? 4042次閱讀
- C++之STL庫中的容器 996次閱讀
- STL的概述 1188次閱讀
- PLC梯形圖轉換成STL程序 4249次閱讀
- Boost庫是什么?C++ Boost的詳細資料簡介 9171次閱讀
- WP_492 出色的計算密集型系統開發平臺 4366次閱讀
- keil uvision2中文版|keil uvision2漢化補丁下載 1w次閱讀
- adc0809中文資料下載 adc0809引腳圖封裝及應用電路 2w次閱讀
- keil uvision2下載|keil uvision2漢化免費版下載 1.1w次閱讀
- AUTOCAD2009免費下載中文版 CAD2009簡體中文下載及安裝方法 1.2w次閱讀
- MAX232引腳圖功能應用電路 MAX232中文資料PDF數據手冊下載 1.4w次閱讀
- PLC控制系統設計教程: 加熱爐送料系統——仿STL指令的編程方式梯形圖舉例 2590次閱讀
下載排行
本周
- 1感應筆電路圖
- 0.06 MB | 7次下載 | 免費
- 2美的電磁爐維修手冊大全
- 1.56 MB | 5次下載 | 5 積分
- 3Cortex-M3/M4F指令集技術用戶手冊
- 2.28MB | 3次下載 | 免費
- 4SMD LED選型手冊 貼片燈珠
- 5.47 MB | 3次下載 | 免費
- 5基于PLC的拉絲機張力控制系統研究
- 0.14 MB | 2次下載 | 5 積分
- 6LZC3106G高性能諧振控制器中文手冊
- 1.29 MB | 1次下載 | 1 積分
- 7JL2233B集成電平轉換功能的LDO中文手冊
- 0.50 MB | 1次下載 | 免費
- 8加密芯片的一種破解方法和對應加密方案改進設計
- 0.29 MB | 1次下載 | 免費
本月
- 1使用單片機實現七人表決器的程序和仿真資料免費下載
- 2.96 MB | 44次下載 | 免費
- 2UC3842/3/4/5電源管理芯片中文手冊
- 1.75 MB | 19次下載 | 免費
- 3華瑞昇CR216芯片數字萬用表規格書附原理圖及校正流程方法
- 0.74 MB | 14次下載 | 3 積分
- 4DMT0660數字萬用表產品說明書
- 0.70 MB | 13次下載 | 免費
- 53314A函數發生器維修手冊
- 16.30 MB | 13次下載 | 免費
- 6TPS54202H降壓轉換器評估模塊用戶指南
- 1.02MB | 8次下載 | 免費
- 7STM32F101x8/STM32F101xB手冊
- 1.69 MB | 8次下載 | 1 積分
- 8感應筆電路圖
- 0.06 MB | 7次下載 | 免費
總榜
- 1matlab軟件下載入口
- 未知 | 935119次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉換器 PCB layout 設計
- 1.48MB | 420062次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233084次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費下載
- 340992 | 191367次下載 | 10 積分
- 5十天學會AVR單片機與C語言視頻教程 下載
- 158M | 183335次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81581次下載 | 10 積分
- 7Keil工具MDK-Arm免費下載
- 0.02 MB | 73807次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65987次下載 | 10 積分
評論
查看更多