C++程序設計教程(第10版 英文限量版)

[美]保羅·戴特爾(Paul Deitel),[美]哈維·戴特爾(Harvey Deitel)

  • 出版商: 清華大學
  • 出版日期: 2025-06-01
  • 售價: $834
  • 語言: 簡體中文
  • 頁數: 1030
  • ISBN: 7302692947
  • ISBN-13: 9787302692942
  • 相關分類: C++ 程式語言
  • 下單後立即進貨 (約2週~3週)

  • C++程序設計教程(第10版 英文限量版)-preview-1
  • C++程序設計教程(第10版 英文限量版)-preview-2
  • C++程序設計教程(第10版 英文限量版)-preview-3
C++程序設計教程(第10版 英文限量版)-preview-1

商品描述

"本書遵循C++14標準,引入智能指針、標準庫容器、疊代器、類模板等諸多現代語言元素,是一本體現現代C++語言特征的優秀教科書。本書討論結構化編程、面向對象編程和泛型編程3種編程範式,既有C++基礎知識的細節介紹,又有開發大型軟件的能力訓練。書中大量的現實案例研究很具啟發性。本書以C++標準庫類對象構建面向對象程序為切入點,全面介紹面向對象程序設計方法,既符合學習C++程序設計的認知規律,也能滿足現代軟件開發的現實需求。全書引入“實時編碼”教學法,通過完整的、可實際運行的C++程序來介紹程序設計的概念和方法,讓讀者在程序語境中理解程序概念和語言規則。 本書既可作為高等學校程序設計課程的教材和廣大教師教學、學生自學的參考書,也適合希望掌握現代C++編程範式的程序設計愛好者學習使用,還可供正在進行項目準備的軟件開發人員閱讀參考。 "

作者簡介

保羅·戴特爾,是全球暢銷的編程語言教材和專業圖書作家,“How to Program”系列是其極負盛名的一套計算機編程教材,已經銷售近40年,並被翻譯成中文在內的十幾種語言。他們成立的Deitel & Associates公司是一家國際知名的企業培訓和寫作公司,專門進行計算機編程語言、對象技術、移動應用開發及Internet和Web軟件技術方面的培訓和寫作,出版了一流的編程專業的大學教材、 專業圖書以及LiveLessons視頻課程。

目錄大綱

目錄

 

第1章計算機和C++簡介1

 

1.1引言2

 

1.2計算機和互聯網在工業和研究中的應用3

 

1.3硬件和軟件5

 

1.3.1摩爾定律5

 

1.3.2計算機組成6

 

1.4數據的層次模型7

 

1.5機器語言、匯編語言和高級語言10

 

1.6C和C++11

 

1.7程序設計語言12

 

1.8對象技術介紹14

 

1.9典型的C++開發環境17

 

1.10測試一個C++應用程序20

 

1.10.1在Windows平臺使用Visual Studio 2015進行編譯和

運行20

 

1.10.2在Linux平臺使用GNU C++編譯器進行編譯和運行25

 

1.10.3在Mac OS X平臺使用Xcode進行編譯和運行27

 

1.11操作系統32

 

1.11.1Windows——專有操作系統32

 

1.11.2Linux——開源操作系統32

 

1.11.3Apple公司的OS X及適用於iPhone、iPad和

iPod Touch設備的iOS33

 

1.11.4Google公司的Android33

 

1.12互聯網和萬維網34

 

1.13軟件開發的一些關鍵術語36

 

1.14C++11和C++14: C++語言的最新版本38

 

1.15Boost C++庫39

 

1.16緊跟信息技術的發展步伐39

 

第2章C++編程入門、輸入/輸出和運算符44

 

2.1引言45

 

2.2第一個C++程序: 輸出一行文本45

 

2.3修改第一個C++程序49

 

2.4另一個C++程序: 整數相加50

 

2.5內存的概念54

 

2.6算術運算55

 

2.7判斷: 相等運算符和關系運算符59

 

2.8本章小結63

 

第3章類、對象、成員函數和字符串入門73

 

3.1引言74

 

3.2測試Account對象75

 

3.2.1實例化一個對象75

 

3.2.2頭文件和源文件76

 

3.2.3調用Account類的getName成員函數76

 

3.2.4使用getline輸入字符串77

 

3.2.5調用Account類的setName成員函數77

 

3.3具有數據成員及Set和Get成員函數的Account類78

 

3.3.1Account類的定義78

 

3.3.2關鍵字class和類體79

 

3.3.3類型為string的數據成員name79

 

3.3.4setName成員函數80

 

3.3.5getName成員函數82

 

3.3.6訪問修飾符private和public82

 

3.3.7Account類的UML類圖83

 

3.4Account類: 使用構造函數初始化對象84

 

3.4.1定義Account構造函數以實現對象初始化85

 

3.4.2在創建Account對象時自動初始化86

 

3.4.3具有構造函數的Account類的UML類圖88

 

3.5具有set和get成員函數的軟件工程88

 

3.6具有余額屬性的Account類及數據驗證89

 

3.6.1數據成員balance89

 

3.6.2具有驗證功能的雙形參構造函數91

 

3.6.3具有驗證功能的deposit成員函數91

 

3.6.4getBalance成員函數91

 

3.6.5操作具有余額屬性的Account對象92

 

3.6.6具有余額屬性及deposit和getBalance成員函數的

Account類的UML類圖94

 

3.7本章小結94

 

第4章算法開發和控制語句(第1部分)103

 

4.1引言104

 

4.2算法105

 

4.3偽代碼105

 

4.4控制結構106

 

4.4.1順序結構106

 

4.4.2選擇語句108

 

4.4.3循環語句108

 

4.4.4控制結構小結109

 

4.5if單分支選擇語句109

 

4.6if…else雙分支選擇語句110

 

4.6.1嵌套的if…else語句111

 

4.6.2else懸掛問題113

 

4.6.3語句塊113

 

4.6.4條件運算符(?:)114

 

4.7Student類: 嵌套的if…else語句115

 

4.8while循環語句117

 

4.9構建算法: 計數器控制的循環119

 

4.9.1計數器控制的循環的偽代碼算法119

 

4.9.2實現計數器控制的循環120

 

4.9.3整數除法和截斷的註意事項122

 

4.9.4算術溢出122

 

4.9.5輸入驗證123

 

4.10構建算法: 哨兵控制的循環123

 

4.10.1自頂向下、逐步求精: 頂層和第一次細化124

 

4.10.2進行第二次細化124

 

4.10.3實現哨兵控制的循環126

 

4.10.4基本數據類型間的顯式和隱式轉換129

 

4.10.5格式化浮點數130

 

4.10.6無符號整數和用戶輸入處理130

 

4.11構建算法: 嵌套的控制語句131

 

4.11.1問題描述131

 

4.11.2自頂向下、逐步求精: 頂層的偽代碼表示132

 

4.11.3自頂向下、逐步求精: 第一次細化132

 

4.11.4自頂向下、逐步求精: 第二次細化132

 

4.11.5偽代碼的第二次完整細化133

 

4.11.6實現偽代碼算法的程序134

 

4.11.7使用列表初始化防止窄化轉換135

 

4.12復合賦值運算符136

 

4.13自增和自減運算符137

 

4.14基本類型不可移植140

 

4.15本章小結140

 

第5章控制語句(第2部分)和邏輯運算符159

 

5.1引言160

 

5.2計數器控制的循環的基本要素160

 

5.3for循環語句161

 

5.4使用for語句的示例165

 

5.5應用實例: 偶數求和166

 

5.6應用實例: 復利計算167

 

5.7案例研究: 使用DollarAmount類進行基於整數的貨幣計算171

 

5.7.1演示DollarAmount類172

 

5.7.2DollarAmount類175

 

5.8do…while循環語句179

 

5.9switch多分支選擇語句180

 

5.10break和continue語句186

 

5.10.1break語句186

 

5.10.2continue語句187

 

5.11邏輯運算符188

 

5.11.1邏輯與(&&)運算符188

 

5.11.2邏輯或(||)運算符189

 

5.11.3短路求值190

 

5.11.4邏輯非(!)運算符190

 

5.11.5邏輯運算符示例191

 

5.12易於混淆的相等(==)和賦值(=)運算符192

 

5.13結構化編程小結194

 

5.14本章小結199

 

第6章函數和遞歸入門211

 

6.1引言212

 

6.2C++的程序組件213

 

6.3數學庫函數214

 

6.4函數原型215

 

6.5函數原型和實參類型強制轉換的說明218

 

6.5.1函數簽名和函數原型219

 

6.5.2實參類型強制轉換219

 

6.5.3實參提升規則和隱式轉換219

 

6.6C++標準庫頭文件220

 

6.7案例研究: 隨機數生成222

 

6.7.1投擲六面骰子223

 

6.7.2投擲6000萬次六面骰子224

 

6.7.3使用srand函數隨機化隨機數生成器225

 

6.7.4使用當前時間為隨機數生成器設定種子227

 

6.7.5對隨機數進行比例縮放和偏移調整227

 

6.8案例研究: 碰運氣遊戲並引入作用域枚舉228

 

6.9C++11的隨機數232

 

6.10作用域規則233

 

6.11函數調用棧和激活記錄237

 

6.12內聯函數241

 

6.13引用和引用形參242

 

6.14默認實參245

 

6.15一元作用域解析運算符247

 

6.16函數重載248

 

6.17函數模板251

 

6.18遞歸254

 

6.19使用遞歸的示例: 斐波那契數列257

 

6.20遞歸與疊代260

 

6.21本章小結263

 

第7章類模板array和vector及捕獲異常283

 

7.1引言284

 

7.2array對象284

 

7.3array對象的聲明286

 

7.4使用array對象的示例286

 

7.4.1聲明array對象並使用循環初始化array對象的元素287

 

7.4.2在聲明中使用初始化列表初始化array對象288

 

7.4.3使用常量變量指定array對象的大小並用計算結果設置

array對象的元素289

 

7.4.4求array對象的元素之和290

 

7.4.5使用條形圖圖形化顯示array對象數據291

 

7.4.6使用array對象的元素作為計數器292

 

7.4.7使用array對象匯總調查結果293

 

7.4.8靜態局部array對象和自動局部array對象296

 

7.5基於範圍的for語句298

 

7.6案例研究: 使用array對象存儲成績的GradeBook類300

 

7.7array對象的排序和查找306

 

7.7.1排序306

 

7.7.2查找306

 

7.7.3sort和binary_search函數的演示306

 

7.8多維array對象307

 

7.9案例研究: 使用二維array對象的GradeBook類311

 

7.10C++標準庫中的vector類模板簡介317

 

7.11本章小結323

 

第8章指針339

 

8.1引言340

 

8.2指針變量的聲明和初始化341

 

8.2.1指針的聲明341

 

8.2.2指針的初始化342

 

8.2.3C++11之前的空指針342

 

8.3指針運算符342

 

8.3.1取地址(&)運算符342

 

8.3.2間接尋址(*)運算符343

 

8.3.3使用取地址(&)和間接尋址(*)運算符344

 

8.4使用指針的引用傳遞345

 

8.5內置數組349

 

8.5.1聲明和訪問內置數組349

 

8.5.2初始化內置數組350

 

8.5.3向函數傳遞內置數組350

 

8.5.4聲明內置數組形參351

 

8.5.5C++11: 標準庫函數begin和end351

 

8.5.6內置數組的局限性351

 

8.5.7有時需要內置數組352

 

8.6使用const修飾指針352

 

8.6.1指向非常量數據的非常量指針353

 

8.6.2指向常量數據的非常量指針353

 

8.6.3指向非常量數據的常量指針354

 

8.6.4指向常量數據的常量指針355

 

8.7sizeof運算符356

 

8.8指針表達式和指針算術運算358

 

8.8.1指針加上和減去整數359

 

8.8.2指針相減360

 

8.8.3指針賦值361

 

8.8.4不能間接引用void*指針361

 

8.8.5指針比較361

 

8.9指針和內置數組之間的關系361

 

8.9.1指針/偏移量表示法362

 

8.9.2以內置數組名稱作為指針的指針/偏移量表示法362

 

8.9.3指針/下標表示法362

 

8.9.4演示指針和內置數組之間的關系363

 

8.10基於指針的字符串(選讀)364

 

8.11關於智能指針的說明367

 

8.12本章小結367

 

第9章類的深入剖析385

 

9.1引言386

 

9.2Time類案例研究: 將接口和實現分離387

 

9.2.1類的接口388

 

9.2.2將接口和實現分離388

 

9.2.3Time類的定義388

 

9.2.4Time類的成員函數390

 

9.2.5作用域解析運算符(::)391

 

9.2.6在源文件中包含類的頭文件391

 

9.2.7Time類的成員函數setTime和拋出異常392

 

9.2.8Time類的成員函數toUniversalString和字符串流處理392

 

9.2.9Time類的成員函數toStandardString393

 

9.2.10隱式內聯成員函數393

 

9.2.11成員函數與全局函數393

 

9.2.12Time類的使用394

 

9.2.13對象大小396

 

9.3編譯和連接過程396

 

9.4類作用域和訪問類成員398

 

9.5訪問函數和工具函數399

 

9.6Time類案例研究: 具有默認實參的構造函數399

 

9.6.1具有默認實參的構造函數399

 

9.6.2構造函數重載和C++11委托構造函數404

 

9.7析構函數405

 

9.8何時調用構造函數和析構函數405

 

9.8.1全局作用域對象的構造函數和析構函數406

 

9.8.2非靜態局部對象的構造函數和析構函數406

 

9.8.3靜態局部對象的構造函數和析構函數406

 

9.8.4演示何時調用構造函數和析構函數406

 

9.9Time類案例研究: 返回對私有數據成員的引用或指針409

 

9.10默認的逐個成員賦值411

 

9.11const對象和const成員函數413

 

9.12組合: 對象作為類的成員415

 

9.13友元函數和友元類421

 

9.14使用this指針423

 

9.14.1隱式和顯式地使用this指針訪問對象的數據成員424

 

9.14.2使用this指針實現級聯的函數調用425

 

9.15靜態類成員429

 

9.15.1使用類範圍數據的動機429

 

9.15.2靜態數據成員的作用域和初始化429

 

9.15.3訪問靜態數據成員430

 

9.15.4靜態數據成員的演示430

 

9.16本章小結433

 

第10章運算符重載和string類447

 

10.1引言448

 

10.2使用標準庫中string類的重載運算符449

 

10.3運算符重載基礎453

 

10.3.1運算符重載不是自動的453

 

10.3.2不必重載的運算符453

 

10.3.3不能重載的運算符454

 

10.3.4運算符重載的規則和限制454

 

10.4重載二元運算符455

 

10.5重載二元流插入運算符和流提取運算符455

 

10.6重載一元運算符459

 

10.7重載自增和自減運算符460

 

10.8案例研究: Date類461

 

10.9動態內存管理466

 

10.10案例研究: Array類468

 

10.10.1使用Array類469

 

10.10.2Array類的定義473

 

10.11運算符作為成員函數和非成員函數的比較480

 

10.12類型轉換481

 

10.13explicit構造函數和轉換運算符482

 

10.14重載函數調用運算符()485

 

10.15本章小結485

 

第11章面向對象編程: 繼承497

 

11.1引言498

 

11.2基類和派生類499

 

11.2.1CommunityMember類的層次結構499

 

11.2.2Shape類的層次結構500

 

11.3基類和派生類之間的關系501

 

11.3.1創建和使用CommissionEmployee類501

 

11.3.2不使用繼承創建BasePlusCommissionEmployee類506

 

11.3.3創建CommissionEmployeeBasePlusCommissionEmployee

繼承層次結構511

 

11.3.4使用protected數據的CommissionEmployee

BasePlusCommissionEmployee繼承層次結構515

 

11.3.5使用private數據的CommissionEmployee

BasePlusCommissionEmployee繼承層次結構519

 

11.4派生類中的構造函數和析構函數523

 

11.5public、protected和private繼承525

 

11.6本章小結526

 

第12章面向對象編程: 多態性531

 

12.1引言532

 

12.2多態性介紹: 多態視頻遊戲533

 

12.3類繼承層次中對象之間的關系534

 

12.3.1從派生類對象調用基類函數534

 

12.3.2將派生類指針指向基類對象537

 

12.3.3通過基類指針調用派生類成員函數538

 

12.4虛函數和虛析構函數540

 

12.4.1為什麼虛函數是有用的540

 

12.4.2聲明虛函數540

 

12.4.3通過基類指針或引用調用虛函數541

 

12.4.4通過對象名稱調用虛函數541

 

12.4.5CommissionEmployee層次結構中的虛函數541

 

12.4.6虛析構函數546

 

12.4.7C++11: final成員函數和類546

 

12.5類型域和switch語句547

 

12.6抽象類和純虛函數547

 

12.6.1純虛函數548

 

12.6.2設備驅動程序: 操作系統中的多態性549

 

12.7案例研究: 使用多態性的工資發放系統549

 

12.7.1創建抽象基類Employee550

 

12.7.2創建具體派生類SalariedEmployee553

 

12.7.3創建具體派生類CommissionEmployee556

 

12.7.4創建間接具體派生類BasePlusCommissionEmployee558

 

12.7.5演示多態性的處理過程560

 

12.8多態性、虛函數和動態綁定的底層實現機制(選讀)563

 

12.9案例研究: 使用多態性和運行時類型信息(包括向下強制類型轉換、

dynamic_cast、typeid和type_info)的工資發放系統567

 

12.10本章小結570

 

第13章輸入/輸出流的深入剖析577

 

13.1引言578

 

13.2流579

 

13.2.1經典流和標準流579

 

13.2.2iostream庫的頭文件580

 

13.2.3輸入/輸出流的類和對象580

 

13.3輸出流581

 

13.3.1char*變量的輸出581

 

13.3.2使用put成員函數進行字符輸出582

 

13.4輸入流582

 

13.4.1get和getline成員函數583

 

13.4.2istream的成員函數peek、putback和ignore586

 

13.4.3類型安全輸入/輸出586

 

13.5使用read、write和gcount的非格式化輸入/輸出586

 

13.6流操縱符的深入剖析587

 

13.6.1整數流的基數(dec、oct、hex和setbase)588

 

13.6.2浮點精度(precision、setprecision)588

 

13.6.3字段寬度(width、setw)590

 

13.6.4用戶自定義輸出流操縱符591

 

13.7流的格式狀態和流操縱符592

 

13.7.1尾隨零和小數點(showpoint)593

 

13.7.2對齊方式(left、right和internal)594

 

13.7.3內容填充(fill、setfill)595

 

13.7.4整數流的基數(dec、oct、hex和showbase)597

 

13.7.5浮點數、科學記數法和定點記數法(scientific、fixed)597

 

13.7.6大寫/小寫控制(uppercase)598

 

13.7.7指定布爾格式(boolalpha)599

 

13.7.8通過flags成員函數設置和重置格式狀態600

 

13.8流的錯誤狀態601

 

13.9將輸出流綁定到輸入流604

 

13.10本章小結605

 

第14章文件處理615

 

14.1引言616

 

14.2文件和流616

 

14.3創建順序文件617

 

14.3.1打開一個文件618

 

14.3.2通過open成員函數打開一個文件619

 

14.3.3測試一個文件是否被成功打開619

 

14.3.4重載bool運算符620

 

14.3.5處理數據620

 

14.3.6關閉文件620

 

14.3.7執行樣例621

 

14.4從順序文件中讀取數據621

 

14.4.1打開一個文件用於輸入622

 

14.4.2從文件中讀取數據622

 

14.4.3文件位置指針622

 

14.4.4案例研究: 信用查詢程序623

 

14.5C++14: 讀取和寫入帶引號的文本626

 

14.6更新順序文件627

 

14.7隨機訪問文件628

 

14.8創建隨機訪問文件629

 

14.8.1使用ostream的成員函數write寫入字節數據629

 

14.8.2使用reinterpret_cast運算符轉換指針類型629

 

14.8.3信用處理程序630

 

14.8.4以二進制模式打開一個文件用於輸出633

 

14.9向隨機訪問文件隨機寫入數據633

 

14.9.1以二進制模式打開文件進行輸入/輸出635

 

14.9.2定位文件位置指針635

 

14.10從隨機訪問文件中順序讀取數據635

 

14.11案例研究: 事務處理程序637

 

14.12對象序列化643

 

14.13本章小結644

 

第15章標準庫的容器和疊代器655

 

15.1引言656

 

15.2容器簡介658

 

15.3疊代器簡介662

 

15.4算法簡介667

 

15.5序列容器667

 

15.5.1vector序列容器668

 

15.5.2list序列容器675

 

15.5.3deque序列容器680

 

15.6關聯容器681

 

15.6.1multiset關聯容器682

 

15.6.2set關聯容器685

 

15.6.3multimap關聯容器687

 

15.6.4map關聯容器689

 

15.7容器適配器690

 

15.7.1stack適配器691

 

15.7.2queue適配器693

 

15.7.3priority_queue適配器694

 

15.8bitset類695

 

15.9本章小結697

 

第16章標準庫算法707

 

16.1引言708

 

16.2對疊代器的最低要求708

 

16.3lambda表達式710

 

16.3.1for_each算法711

 

16.3.2具有空引入符的lambda表達式711

 

16.3.3具有非空引入符的lambda表達式——捕獲局部變量712

 

16.3.4lambda表達式的返回類型712

 

16.4算法712

 

16.4.1fill、fill_n、generate和generate_n算法712

 

16.4.2equal、mismatch和lexicographical_compare算法715

 

16.4.3remove、remove_if、remove_copy和remove_copy_if

算法718

 

16.4.4replace、replace_if、replace_copy和replace_copy_if算法721

 

16.4.5數學算法723

 

16.4.6基本的查找和排序算法726

 

16.4.7swap、iter_swap和swap_ranges算法731

 

16.4.8copy_backward、merge、unique和reverse算法732

 

16.4.9inplace_merge、unique_copy和reverse_copy算法735

 

16.4.10集合操作737

 

16.4.11lower_bound、upper_bound和equal_range算法740

 

16.4.12min、max、minmax和minmax_element算法742

 

16.5函數對象744

 

16.6標準庫算法小結747

 

16.7本章小結749

 

第17章異常處理的深入剖析757

 

17.1引言758

 

17.2異常處理控制流程和定義一個異常類759

 

17.2.1定義一個異常類來表示可能發生的問題類型759

 

17.2.2演示異常處理760

 

17.2.3將代碼封裝在try塊中761

 

17.2.4定義catch處理程序處理DivideByZeroException異常762

 

17.2.5異常處理的終止模型762

 

17.2.6用戶輸入非零分母時的程序控制流程763

 

17.2.7用戶輸入零分母時的程序控制流程763

 

17.3重新拋出異常764

 

17.4棧展開766

 

17.5何時使用異常處理767

 

17.6noexcept: 聲明不會拋出異常的函數768

 

17.7構造函數、析構函數和異常處理768

 

17.7.1因異常而調用的析構函數768

 

17.7.2初始化局部對象以獲取資源769

 

17.8處理new失敗769

 

17.8.1new在失敗時拋出bad_alloc異常769

 

17.8.2new在失敗時返回nullptr770

 

17.8.3使用set_new_handler函數處理new失敗771

 

17.9unique_ptr類和動態內存管理772

 

17.9.1unique_ptr的所有權774

 

17.9.2指向內置數組的unique_ptr775

 

17.10標準庫的異常層次結構775

 

17.11本章小結777

 

第18章自定義模板的介紹783

 

18.1引言784

 

18.2類模板785

 

18.2.1創建類模板StackT786

 

18.2.2類模板StackT的數據表示787

 

18.2.3類模板StackT的成員函數787

 

18.2.4在類模板定義的外部聲明類模板的成員函數788

 

18.2.5測試類模板StackT788

 

18.3操作類模板特化對象的函數模板790

 

18.4非類型形參792

 

18.5模板類型形參的默認實參792

 

18.6重載函數模板793

 

18.7本章小結793

 

第19章自定義的模板化數據結構797

 

19.1引言798

 

19.1.1盡可能優先采用標準庫的容器、疊代器和算法799

 

19.1.2特別專題: 構建自己的編譯器799

 

19.2自引用類799

 

19.3鏈表800

 

19.3.1測試鏈表的實現802

 

19.3.2ListNode類模板805

 

19.3.3List類模板806

 

19.3.4insertAtFront成員函數809

 

19.3.5insertAtBack成員函數810

 

19.3.6removeFromFront成員函數810

 

19.3.7removeFromBack成員函數811

 

19.3.8print成員函數812

 

19.3.9循環鏈表和雙向鏈表813

 

19.4棧814

 

19.4.1利用棧和鏈表之間的關系815

 

19.4.2基於List繼承實現Stack類模板815

 

19.4.3類模板中的依賴名稱816

 

19.4.4測試Stack類模板817

 

19.4.5通過List對象組合實現Stack類模板818

 

19.5隊列819

 

19.5.1隊列的應用819

 

19.5.2基於List繼承實現Queue類模板820

 

19.5.3測試Queue類模板821

 

19.6樹823

 

19.6.1基本術語823

 

19.6.2二叉查找樹824

 

19.6.3測試Tree類模板824

 

19.6.4TreeNode類模板826

 

19.6.5Tree類模板827

 

19.6.6Tree成員函數insertNodeHelper829

 

19.6.7Tree遍歷函數829

 

19.6.8刪除重復節點830

 

19.6.9二叉樹練習綜述830

 

19.7本章小結831

 

第20章查找和排序841

 

20.1引言842

 

20.2查找算法843

 

20.2.1線性查找843

 

20.2.2二分查找846

 

20.3排序算法850

 

20.3.1插入排序851

 

20.3.2選擇排序853

 

20.3.3歸並排序(遞歸實現)855

 

20.4本章小結862

 

第21章string類和字符串流處理的深入剖析869

 

21.1引言870

 

21.2string對象的賦值和連接871

 

21.3比較string對象873

 

21.4子串876

 

21.5交換string對象876

 

21.6string對象的特性877

 

21.7在string對象中查找子串和字符880

 

21.8在string對象中替換字符881

 

21.9向string對象插入字符883

 

21.10轉換為基於指針的char*字符串884

 

21.11疊代器886

 

21.12字符串流處理887

 

21.13C++11數值轉換函數890

 

21.14本章小結892

 

第22章位、字符、C字符串和結構體899

 

22.1引言900

 

22.2結構體的定義900

 

22.3typedef和using902

 

22.4案例研究: 模擬洗牌和發牌902

 

22.5位運算符905

 

22.6位域914

 

22.7字符處理庫918

 

22.8C字符串操作函數923

 

22.9C字符串轉換函數930

 

22.10C字符串處理庫中的搜索函數935

 

22.11C字符串處理庫中的內存管理函數939

 

22.12本章小結943

 

 

附錄A運算符的優先級和結合性959

 

附錄BASCII字符集961

 

附錄C基本數據類型963

 

附錄D數制965

 

D.1引言966

 

D.2將二進制數簡化為八進制數和十六進制數969

 

D.3將八進制數和十六進制數轉換為二進制數970

 

D.4將二進制數、八進制數或十六進制數轉換為十進制數970

 

D.5將十進制數轉換二進制數、八進制數或十六進制數971

 

D.6二進制負數: 二進制的補碼表示法973

 

附錄E預處理器979

 

E.1引言980

 

E.2#include預處理指令980

 

E.3#define預處理指令: 符號常量981

 

E.4#define預處理指令: 宏981

 

E.5條件編譯983

 

E.6#error和#pragma預處理指令985

 

E.7#和##運算符985

 

E.8預定義的符號常量985

 

E.9斷言986

 

E.10小結986

 

索引991

 

 

 

第23~26章和附錄F~J為補充閱讀內容,可以掃描前言中的二維碼獲取。

 

第23章其他主題

 

第24章C++11和C++14: 附加特性

 

第25章ATM案例研究(第1部分): 基於UML的面向對象設計

 

第26章ATM案例研究(第2部分): 實現面向對象設計

 

附錄FC遺留代碼

 

附錄GUML: 其他圖表類型

 

附錄H使用Visual Studio調試器

 

附錄I使用GNU C++調試器

附錄J使用Xcode調試器

 

最後瀏覽商品 (1)