Big C++ 中文版(原書第3版)

[美] 凱·霍斯特曼(Cay Horstmann) 著

  • 出版商: 機械工業
  • 出版日期: 2019-11-01
  • 定價: $1,194
  • 售價: 8.5$1,015
  • 語言: 簡體中文
  • ISBN: 7111638190
  • ISBN-13: 9787111638193
  • 相關分類: C++ 程式語言
  • 立即出貨

買這商品的人也買了...

商品描述

本書由經典暢銷書籍《Java核心技術》的作者Cay Horstmann撰寫,非常適合C++初學者和愛好者閱讀,不僅能夠幫助新手快速入門,掌握基礎知識,而且有益於培養讀者解決實際問題的思維和能力。

書中採用傳統的講授方法,首先強調控制結構、過程分解和數組算法,在較為靠前的章節中就適時地引入了對象的概念。從第9章開始,讀者將動手設計和實現自定義的類。最後介紹數據結構和算法,涉及高級C++特性。

本書特色
·難度適中,適合自學。從C++繁雜的特性中進行精選,既涵蓋大多數現代特性及程序設計的基本思想,又保持了適當的學習難度。
·深入淺出,闡述透徹。對於一些難以理解的內容,結合文字、圖片、代碼及習題等多種方式進行講解,所有代碼均可免費下載。
·實例學習,強調實戰。共包含25個可運行的示例,通過實踐幫助讀者理解面向對象程序設計,從新手進階為富有成效的程序員。

作者簡介

[美] 凱·霍斯特曼(Cay Horstmann) 著:凱·霍斯特曼(Cay Horstmann) 聖何塞州立大學計算機科學系教授,Java的倡導者,經常在開發人員會議上發表演講。他是《Java核心技術》的作者,同時也關注Python、Scala、C++等語言,為專業程序員和計算機科學專業學生編寫過數十本圖書。

目錄大綱

出版者的話
譯者序
前言
第1章引言1
1.1何謂編程1
1.2計算機的組成2
1.3機器代碼和程序設計語言4
1.4熟悉編程環境5
1.5分析第一個程序8
1.6錯誤11
1.7問題求解:算法設計12
1.7.1算法的概念12
1.7.2求解投資問題的算法13
1.7.3偽代碼14
1.7.4從算法到程序14
本章小結18
複習題19
練習題22
編程項目23
第2章基本數據類型25
2.1變量25
2.1.1變量定義25
2.1.2數值類型26
2.1.3變量名27
2.1.4賦值語句27
2.1.5常量29
2.1.6註釋29
2.2算術運算33
2.2.1算術運算符33
2.2. 2遞增和遞減33
2.2.3整數除法和余數33
2.2.4將浮點數轉換為整數34
2.2.5冪運算和求根運算34
2.3輸入和輸出40
2.3.1輸入40
2.3.2格式化輸出41
2.4問題求解:首先通過手工實現43
2.5字符串46
2.5.1字符串類型47
2.5.2連接47
2.5.3字符串輸入47
2.5.4字符串函數48
本章小結50
複習題51
練習題54
編程項目56
第3章分支64
3.1 if語句64
3.2數字和字符串的比較69
3.3多路分支75
3.4嵌套分支79
3.5問題求解:流程圖83
3.6問題求解:測試用例85
3.7布爾變量和運算符87
3.8實際應用:輸入確認91
本章小結94
複習題95
練習題99
編程項目101
第4章循環109
4.1 while循環109
4.2問題求解:手動跟踪115
4.3 for循環118
4.4 do循環123
4.5處理輸入124
4.5.1標記值124
4.5.2一直讀直至輸入失敗126
4.6問題求解:情節串聯圖板129
4.7常用的循環算法131
4.7.1求和及均值131
4.7.2統計匹配項132
4.7.3找到第一個匹配項132
4.7.4一直提示輸入直至找到匹配項132
4.7.5最大值和最小值133
4.7. 6比較相鄰值133
4.8嵌套循環137
4.9問題求解:首先解決較簡單的問題140
4.10隨機數與模擬144
4.10.1生成隨機數144
4.10.2模擬擲骰子145
4.10.3蒙特卡羅方法146
本章小結148
複習題149
練習題153
編程項目156
第5章函數167
5.1將函數看作黑盒167
5.2實現函數168
5.3參數傳遞170
5.4返回值172
5.5無返回值的函數176
5.6問題求解:可重用函數177
5.7問題求解:逐步細化178
5.8變量作用域和全局變量185
5.9引用參數187
5.10遞歸函數(可選) 191
本章小結196
複習題197
練習題200
編程項目203
第6章數組和向量225
6.1數組225
6.1.1定義數組225
6.1.2訪問數組元素227
6.1.3部分填充的數組228
6.2常見的數組算法230
6.2.1填充230
6.2.2複製231
6.2.3求和及均值231
6.2.4最大值和最小值231
6.2.5元素分隔符232
6.2.6統計匹配項232
6.2.7線性搜索232
6.2.8移除元素233
6.2.9插入元素233
6.2.10交換元素234
6.2.11讀取輸入235
6.3數組與函數239
6.4問題求解:修改算法242
6.5問題求解:通過操縱有形的物體發現算法248
6.6二維數組250
6.6.1定義二維數組250
6.6.2訪問數組元素251
6.6.3定位相鄰元素251
6.6.4計算行和列的合計252
6.6.5二維數組參數253
6.7向量256
6.7.1定義向量256
6.7.2增大和減小向量257
6.7.3向量和函數258
6.7.4向量算法259
6.7.5二維向量260
本章小結262
複習題262
練習題266
編程項目269
第7章指針和結構體282
7.1定義和使用指針282
7.1.1定義指針282
7.1.2通過指針訪問變量283
7.1.3指針的初始化285
7.2數組和指針287
7.2.1數組作為指針287
7.2.2指針的算術運算288
7.2.3數組參數變量就是指針289
7.3 C和C++字符串292
7.3.1字符類型292
7.3.2 C字符串292
7.3.3字符數組293
7.3.4 C和C++字符串的相互轉換293
7.3.5 C++字符串和運算符[] 294
7.4動態內存分配296
7.5指針數組和指針向量299
7.6問題求解:繪製指針-數據關係圖302
7.7結構體305
7.7.1結構體類型305
7.7. 2結構體的賦值和比較306
7.7.3函數和結構體306
7.7.4結構體數組306
7.7.5具有數組成員的結構體307
7.7.6嵌套結構體307
7.8指針和結構體309
7.8.1指向結構體的指針309
7.8.2具有指針成員的結構體309
本章小結311
複習題311
練習題315
編程項目317
第8章流323
8.1讀寫文本文件323
8.1.1打開流323
8.1. 2從文件中讀入324
8.1.3寫入文件325
8.1.4文件處理示例325
8.2讀取文本輸入328
8.2.1讀入單詞328
8.2.2讀取字符328
8.2.3讀取多行數據329
8.3寫入文本輸出332
8.4解析和格式化字符串334
8.5命令行參數336
8.6隨機訪問及二進製文件342
8.6.1隨機訪問343
8.6.2二進製文件343
8.6.3處理圖像文件343
本章小結347
複習題348
練習題348
編程項目350
第9章類358
9.1面向對象程序設計358
9.2實現一個簡單的類359
9.3指定類的公共接口361
9.4設計數據表示363
9.5成員函數365
9.5.1實現成員函數365
9.5.2隱式和顯式參數365
9.5.3從成員函數調用成員函數366
9.6構造函數369
9.7問題求解:跟踪對象374
9.8問題求解:發現類380
9.9單獨編譯382
9.10指向對象的指針386
9.10.1動態分配對象386
9.10.2 -]運算符387
9.10.3 this指針387
9.11問題求解:對像數據的模式388
9.11.1保存總數388
9.11.2對事件進行計數389
9.11.3聚集值389
9.11.4管理對象的屬性390
9.11.5對具有不同狀態的對象建模390
9.11. 6描述對象的位置391
本章小結393
複習題394
練習題396
編程項目397
第10章繼承406
10.1繼承層次結構406
10.2實現派生類410
10.3重寫成員函數414
10.4虛函數及多態性417
10.4.1切割派生類數據問題417
10.4.2指向基類和派生類的指針418
10.4.3虛函數419
10.4.4多態性420
本章小結430
複習題431
練習題434
編程項目434
第11章遞歸443
11.1三角形數443
11.2遞歸助手函數450
11.3遞歸的效率451
11.4排列455
11.5相互遞歸458
11.6回溯461
本章小結468
複習題468
練習題469
編程項目471
第12章排序和查找481
12.1選擇排序481
12.2剖析選擇排序算法483
12.3分析選擇排序算法的性能484
12.4歸併排序488
12.5分析歸併排序算法490
12.6查找494
12.6.1線性查找494
12.6.2二分查找495
12.7問題求解:估計算法的運行時間498
12.7.1線性時間498
12.7.2平方時間499
12.7.3三角形圖案500
12.7.4對數時間501
本章小結503
複習題504
練習題507
編程項目508
第13章高級C++特性515
13.1運算符重載515
13.1.1運算符函數515
13.1.2重載比較運算符517
13.1.3輸入和輸出518
13.1.4運算符成員518
13.2自動內存管理522
13.2.1分配內存的構造函數522
13.2.2析構函數523
13.2.3重載賦值運算符525
13.2.4拷貝構造函數528
13.3模板536
13.3.1函數模板537
13.3 .2類模板537
本章小結540
複習題541
練習題544
編程項目546
第14章鍊錶、棧和隊列564
14.1使用鍊錶564
14.2實現鍊錶568
14.2.1鍊錶、節點和迭代器類569
14.2.2實現迭代器570
14.2.3實現插入和刪除572
14.3鍊錶、數組及向量操作的效率580
14.4棧和隊列583
14.5實現棧和隊列586
14.5.1由鍊錶實現棧586
14.5.2由數組實現棧589
14.5.3由鍊錶實現隊列589
14.5.4由循環數組實現隊列590
14.6棧和隊列的應用590
14.6.1平衡括號590
14.6.2逆波蘭表達式求值591
14.6.3代數表達式求值593
14.6.4回溯596
本章小結598
複習題599
練習題601
編程項目603
第15章集合、映射和哈希表617
15.1集合617
15.2映射619
15.3實現哈希表624
15.3.1哈希碼624
15.3.2哈希表625
15.3.3查找元素625
15.3.4添加和移除元素626
15.3.5遍歷哈希表626
本章小結635
複習題635
練習題636
編程項目637
第16章樹結構641
16.1樹的基本概念641
16.2二叉樹644
16.2.1二叉樹示例644
16.2.2平衡樹646
16.2.3二叉樹的實現647
16.3二叉查找樹648
16.3.1二分查找的屬性648
16.3.2插入操作649
16.3.3移除操作651
16.3.4操作的效率652
16.4樹遍歷657
16.4.1中序遍歷657
16.4.2前序遍歷和後序遍歷658
16.4.3訪問者模式659
16.4.4深度優先搜索和廣度優先搜索660
16.4.5樹迭代器661
16.5紅黑樹662
16.5.1紅黑樹的基本性質662
16.5.2插入操作664
16.5.3移除操作665
本章小結668
複習題669
練習題670
編程項目671
第17章優先級隊列和堆711
17.1優先級隊列711
17.2堆713
17.3堆排序算法722
本章小結726
複習題727
練習題727
編程項目728
在線資源一
附錄A保留字小結
附錄B運算符小結
附錄C字符編碼
附錄D C++庫小結
附錄E C++語言編程風格指南
附錄F數字系統
術語表