商品簡介
本書把C++知識按照實際開發工作的需要,分為C語言、C++和STL等3部分,共分10章,主要講解C++在實際工作中需要掌握的知識、需要掌握多深,確保C++程序員在學習和工作中少走彎路,打下扎實的C++基本功。
本書適合大學計算機相關專業的學生、C++初學者、C++實際開發經驗較少的程序員和實際開發經驗只有2~3年的程序員。本書是C++程序員的求職和工作指南,是大學院校學生學習C++不可多得的輔助教材。同時,C語言部分的講解,也是C程序員必備的教材。
總之,本書通過作者多年的編程經驗,講解了C/C++程序員在實際工作中需要掌握的知識,是C/C++程序員求職和謀求更高薪水的指南。
目次
前言
第1章 C語言關鍵知識
1.1 C語言知識
1.2 C語言的核心:函數、變量和指針
1.2.1 C語言測試程序
1.2.2 內存存儲
1.2.3 程序解答
1.2.4 常量和指針
1.2.5 臨時對象
1.2.6 被輕視的數據類型
1.2.7 小結
1.3 蘊藏豐富的Hello World程序
1.3.1 開始Hello World
1.3.2 預處理
1.3.3 控制臺
1.3.4 調試
1.3.5 雜項
第2章 關鍵算法和數據結構
2.1 掌握算法的前提Ⅰ:單鏈表
2.1.1 線性表
2.1.2 單鏈表
2.1.3 單鏈表創建算法
2.1.4 單鏈表查找算法
2.1.5 單鏈表刪除算法
2.1.6 單鏈表插入算法
2.2 掌握算法的前提Ⅲ.循環鏈表
2.2.1 循環鏈表創建算法
2.2.2 循環鏈表查找算法
2.2.3 循環鏈表刪除算法
2.2.4 循環鏈表插入算法
2.3 被初學者忽視被資深者推崇的:雙向鏈表
2.3.1 雙向鏈表創建算法
2.3.2 雙向鏈表查找算法
2.3.3 雙向鏈表刪除算法
2.3.4 雙向鏈表插入算法
2.3.5 雙向循環鏈表
2.4 高手的摯愛:充分理解“樹”
2.4.1 樹的基本概念
2.4.2 二叉樹
2.4.3 線索二叉樹
2.5 幾棵最重要的“樹”
2.5.1 表達式樹
2.5.2 二叉排序樹
2.5.3 平衡二叉樹
2.5.4 紅黑樹
2.5.5 堆
2.6 最需要掌握的排序算法和查找算法
2.6.1 插入排序
2.6.2 選擇排序
2.6.3 交換排序
2.6.4 歸并排序
2.6.5 需要掌握的查找算法
第3章 記住C語言的常用庫函數
3.1 庫函數的使用
3.1.1 使用MSDN
3.1.2 熟練使用庫函數
3.2 常用庫函數
3.2.1 stdlib.h
3.2.2 stdio.h
3.2.3 math.h
3.2.4 ctype.h
3.2.5 string.h
3.2.6 malloc.h
第4章 開始學習C++
4.1 C++語言知識體系
4.2 預處理
4.2.1 常見的預處理
4.2.2 注意#pragma pack
4.2.3 其他需要知道的預處理宏
4.3 函數
4.3.1 聲明和定義函數、函數原型
4.3.2 記住:函數聲明前面的壓棧聲明
4.3.3 必須理解:傳值調用和傳址調用
4.3.4 盡量采用傳址調用(傳指針或傳引用)來代替傳值調用
4.3.5 內聯(inline)函數
4.3.6 知道:函數重載
4.3.7 理解extern”C”
4.3.8 理解函數指針
4.3.9 專家的最愛:回調函數
4.3.10 namespace命名空間
4.3.11 STL的基礎:函數模板
第5章 C++類和繼承
5.1 快速了解類的基本概念
5.1.1 類和類對象的定義
5.1.2 靜態成員
5.1.3 友元
5.1.4 局部類和嵌套類
5.1.5 類模板
5.2 真正走入C++:類的構造和析構
5.2.1 new/delete和malloc/free以及定位new
5.2.2 構造函數和析構函數
5.2.3 默認構造函數
5.2.4 類的拷貝構造函數
5.2.5 在含有指針數據成員的時候構建自己的拷貝構造函數
5.2.6 類的賦值和拷貝構造函數必須同時設計,盡量用拷貝構造來代替賦值
5.2.7 類的成員初始化表
5.3 C++九鼎之器:類的繼承
5.3.1 繼承和派生
5.3.2 記住常用的繼承關係是公有繼承
5.3.3 構造函數、析構函數在繼承關係中調用的優先順序
5.3.4 多繼承
5.4 C++虛函數
5.4.1 虛函數
5.4.2 靜態聯編和動態聯編
5.4.3 記住父類的析構函數必須是:虛的析構函數
5.4.4 再談多繼承
5.4.5 純虛函數和抽象類
5.5 高級話題:虛擬繼承和虛基類
第6章 走入STL
6.1 STL知識體系一覽
6.2 初窺STL
6.2.1 STL簡介
6.2.2 STL歷史
6.2.3 STL的5個版本
6.2.4 一個小程序——需要仔細理解
6.2.5 程序剖析
6.2.6 從容器開始
第7章 STL容器
7.1 用vector敲開STL的大門
7.1.1 vector概述
7.1.2 vector定義源碼
7.1.3 vector成員函數
7.1.4 vector數據結構說明
7.2 雙向循環鏈表list
7.2.1 list概述
7.2.2 list定義源碼
7.2.3 list成員函數
7.2.4 list數據結構說明
7.3 慎用deque
7.3.1 deque概述
7.3.2 deque定義源碼
7.3.3 deque成員函數
7.3.4 deque數據結構說明
7.4 deque的stack、queue與vector的priority_queue
7.4.1 stack概述
7.4.2 queue概述
7.4.3 priority—queue概述
7.4.4 小結
7.5 關聯容器
7.5.1 關聯容器概述
7.5.2 紅黑樹回顧
7.5.3 紅黑樹定義源碼
7.6 set
7.6.1 set概述
7.6.2 set定義源碼
7.6.3 set成員函數
7.6.4 set數據結構
7.7 map
7.7.1 map概述
7.7.2 map定義源碼
7.7.3 map成員函數
7.7.4 map數據結構
7.8 multiset和。multimap
7.8.1 multiset概述
7.8.2 multimap概述
第8章 迭代器iterator
8.1 最簡單的vector迭代器
8.2 list迭代器
8.3 其他容器的迭代器
8.4 初窺iterator適配器
8.5 迭代器分類
8.6 智能指針
第9章 配置器、函數對象和適配器
9.1 配置器allocator
9.1.1 初窺配置器
9.1.2 P.J.Plauger版本的配置器
9.1.3 SGI版本的配置器
9.2 函數對象functors/function obiects(又稱仿函數)
9.2.1 初窺函數對象
9.2.2 一元函數對象和二元函數對象
9.2.3 常用函數對象
9.3 適配器adapter(又稱配接器)
9.3.1 容器適配器container adapter
9.3.2 迭代器適配器iterator adapter
9.3.3 函數適配器function adapter
第10章 泛型算法algorithms
10.1 算法分類
10.2 算法中的迭代器
10.2.1 輸入迭代器Inputlterator
10.2.2 輸出迭代器Outputlterator
10.2.3 前向迭代器ForwardIterator
10.2.4 雙向迭代器Bidirectionallterator
10.2.5 隨機訪問迭代器RandomAccesslterator
10.3 常用算法