C++ 程序設計 : 原理與實踐(進階篇), 2/e (Programming: Principles and Practice Using C++, 2/e)
內容描述
C++之父BjarneStroustrup經典著作《C++程序設計:原理與實踐(原書第2版)》基於新的C++11和C++14,廣泛地介紹了程序設計的基本概念和技術,包括類型系統、算術運算、控制結構、錯誤處理等;介紹了從鍵盤和文件獲取數值和文本數據的方法以及以圖形化方式表示數值數據、文本和幾何圖形;介紹了C++標準庫中的容器(如向量、列表、映射)和算法(如排序、查找和內積)的設計和使用。同時還對C++思想和歷史進行了詳細的討論,很好地拓寬了讀者的視野。為方便讀者循序漸進學習,加上篇幅所限,《C++程序設計:原理與實踐(原書第2版)》分為基礎篇和進階篇兩冊出版,基礎篇包括第0~11章、第17~19章和附錄A、C,進階篇包括第12~16章、第20~27章和附錄B、D、E。本書是進階篇。本書通俗易懂、實例豐富,可作為大學電腦、電子工程、信息科學等相關專業的教材,也可供相關專業人員參考。
目錄大綱
第15章容器和迭代器
15.1存儲和處理數據
15.1.1處理數據
15.1.2泛化代碼
15.2STL理念
15.3序列和迭代器
15.3.1回到實例
15.4鍊錶
15.4 .1鏈袁操作
15.4.2遍歷
15.5再次泛化vector
15.5.1遍歷容器
15.5.2auto
15.6實例:一個簡單的文本編輯器
15.6.1處理行
15.6.2遍歷
15.7vector、list和string
15.7.1insert和erase
15.8調整vector類達到STL版本的功能
15.9調整內置數組達到STL版本的功能
15.10容器概覽
15.10.1迭代器類別
簡單練習
思考題
術語
習題
附言
第16章算法和映射
16.1標準庫算法
16.2最簡單的算法find()
16.2.1一些一般的應用
16.3通用搜索算法findjf()
16.4函數對象
16.4.1函數對象的抽象視圖
16.4.2類成員上的斷言
16.4.3lambda表達式
16.5數值算法
16.5.1累積
16.5 .2泛化accumulate()
16.5.3內積
16.5.4泛化inner_product()
16.6關聯容器
16.6.1map
16.6.2map概覽
16.6.3另一個map實例
16.6.4unordered_map
16.6.5set
16.7 貝
16.7.1基本拷貝算法
16.7.2流迭代器
16.7.3使用set保持順序
16.7.4copy_if
16.8排序和搜索
16.9容器算法
簡單練習
思考題
術語
習題
附言
第17章一個顯示模型
17.1為什麼要使用圖形
17.2一個基本顯示模型
17.3第一個例子
17.4使用GUI庫
17.5坐標系
17.6Shape
17.7使用Shape類
17.7.1圖形頭文件和主函數
17.7.2一個幾乎空白的窗口
17.7.3坐標軸
17.7.4繪製函數圖
17.7.5Polygon
17.7.6Rectangle
17.7.7填充
17.7.8Text
17.7.9Image
17.7.10更多未討論的內容
17.8讓圖形程序運行起來
17.8.1源文件
簡單練習
思考題
術語
習題
附言
第18章圖形類
18.1圖形類概覽
18.2Point和Line
18.3Lines
184Color
185Line_Style
18.6Open_polyline
18.7Closed_polyline
18.8Polygon
18.9Rectangle
18.10管理未命名對象
18.11Text
18.12Circle
18.13Ellipse
18.14Marked_polyline
18.15Marks
18.16Mark
18.17Image
簡單練習
思考題
術語
習題
附言
第19章設計圖形類
19.1設計原則
19.1.1類型
19.1.2操作
19.1.3命名
19.1.4可變性
19.2S hape
19.2.1一個抽像類
19.2.2訪問控制
19.2.3繪製形狀
19.2.4拷貝和可變性
19.3基類和派生類
19.3.1對象佈局
19.3.2類的派生和虛函數的定義
19.3.3覆蓋
19.3.4訪問
19.3.5純虛函數
19.4面向對象程序設計的好處
簡單練習
思考題
術語
習題
附言
第20章繪製函數圖和數據圖
20.1簡介
20.2繪製簡單函數圖
20.3Function
20.3.1默認參數
20.3. 2更多例子
20.3.3lambda表達式
20.4Axis
20.5近似
20.6繪製數據圖
20.6.1讀取文件
20.6.2一般佈局
20.6.3數據比例
20.6.4構造數據圖
簡單練習
思考題
術語
習題
附言
第21章圖形用戶界面
21.1用戶界面的選擇
21.2“Next”按鈕
21.3一個簡單的窗口
21.3.1回調函數
21.3.2等待循環
21.3.3lambda表達式作為回調函數
21.4Button和其他Widget
21.4.1Wjdget
21.4.2Button
21.4.3In_box和Out_box
21.4.4Menu
21.5一個實例
21.6控制流反轉
21.7添加菜單
21.8調試GUI代碼
簡單練習
思考題
術語
習題
附言
第22章理念和歷史
22.1歷史、理念和專業水平
22 .1.1程序設計語言的目標和哲學
22.1.2編程理念
22.1.3風格/範型
22.2程序設計語言歷史概覽
22.2.1最早的程序設計語言
22.22現代程序設計語言的起源
22.2.3Algol家族
22.2.4Simula
22.2 .5C
22.2.6C++
22.2.7今天
22.2.8參考資料
思考題
術語
習題
附言
第23章文本處理
23.1文本
23.2字符串
23.3I/O流
23.4映射
23.4.1實現細節
23.5一個問題
23.6正則表達式的思想
23.6.1原始字符串常量
23.7用正則表達式進行搜索
23.8正則表達式語法
23.8.1字符和特殊字符
23.8.2字符集
23.8.3重複
23.8.4子模式
23.8.5可選項
23.8.6字符集和範圍
23.8.7正則表達式錯誤
23.9使用正則表達式進行模式匹配
23.10參考文獻
簡單練習
思考題
術語
習題
附言
第24章數值計算
24.1簡介
24.2大小、精度和溢出
24.2.1數值限制
24.3數組
24.4 C風格的多維數組
24.5Matrix庫
24.5.1矩陣的維和矩陣訪問
24.5.2一維矩陣
24.5.3二維矩陣
24.5.4矩陣I/O
24.5.5三維矩陣
24.6實例:求解線性方程組
24.6.1經典的高斯消去法
24.6.2選取主元
24.6.3測試
24.7隨機數
24.8標準數學函數
24.9複數
24.10參考文獻
簡單練習
思考題
術語
習題
附言
第25章嵌入式系統程序設計
25.1嵌入式系統
25.2基本概念
25.2.1可預測性
25.2.2理想
25.2.3生活在故障中
25.3內存管理
25.3.1動態內存分配存在的問題
25.3.2動態內存分配的替代方法
25.3.3存儲池實例
25.3.4棧實例
25.4地址、指針和數組
25.4.1未經檢查的類型轉換
25.4.2一個問題:不正常的接口
25.4.3解決方案:接口類
25.4.4繼承和容器
25.5位、字節和字
25.5. 1位和位運算
25.5.2bitset
25.5.3有符號數和無符號數
25.5.4位運算
25.5.5位域
25.5.6實例:簡單加密
25.6編碼規範
25.6.1編碼規範應該是怎樣的
25.6.2編碼原則實例
25.6.3實際編碼規範
簡單練習
思考題
術語
習題
附言
第26章測試
26.1我們想要什麼
26.1.1警告
26.2程序正確性證明
26.3測試
26.3.1回歸測試
26.3.2單元測試
26.3.3算法和非算法
26.3.4系 統測試
26.3.5尋找不成立的假設
26.4測試方案設計
26.5調試
26.6性能
26.6.1計時
26.7參考文獻
簡單練習
思考題
術語
習題
附言
第27章C語言
附錄C標準庫概要
附錄D安裝FLTK
附錄EGUI實現
術語表
參考文獻