出版時間:2010-1 出版社:水利水電出版社 作者:梁永軍 頁數(shù):291
Tag標(biāo)簽:無
前言
本書編寫的目的就是,通過筆者十幾年的C++編程經(jīng)驗,讓C++求職者、C++初學(xué)者和C++程序員知道自己在即將或已經(jīng)從事的C++實際開發(fā)工作中,需要掌握哪些知識,并期望可以通過本書更快、更好、更深入地掌握C++知識,以便在提高水平的同時,謀求一份合適的工作和更高的薪水。也許在讀者看來,這本書更像一本C++求職指南。C++知識博大精深,浩瀚如海。一名成熟的c++程序員需要掌握的知識如同需要掌握十八般武藝一樣,不可勝數(shù)。需要掌握的知識中,基礎(chǔ)知識有c語言知識、C++編程知識、STL編程知識;Windows編程者,還需要掌握Win32編程知識、MFC編程知識、COM編程知識、DCOM知識、COM+編程知識、ATL編程知識等;C++專業(yè)領(lǐng)域又有圖形編程、網(wǎng)絡(luò)通信、數(shù)據(jù)庫編程、跨平臺編程、游戲軟件等。從c語言基礎(chǔ)到后面的專業(yè)領(lǐng)域,每一部分知識都是很大的一塊知識領(lǐng)域,需要費心鉆研。所以,學(xué)習(xí)C++非一日、一時之功,往往需要多年的積累才有可能成為一名合格的程序員。筆者在c++領(lǐng)域工作了很長一段時間,在本書中結(jié)合C++知識和自身十幾年的經(jīng)驗,編撰成集,引導(dǎo)讀者深入C++領(lǐng)域。本書重點在于講解在實際工作中需要掌握的C++知識,為C++程序員打好堅實的基礎(chǔ),書中不涉及數(shù)據(jù)庫、網(wǎng)絡(luò)通信、游戲軟件等具體專業(yè)領(lǐng)域的講解。本書主要是面對C++初學(xué)者、沒有C++實際開發(fā)經(jīng)驗的入門者和實際開發(fā)經(jīng)驗只有2~3年的進(jìn)階者,期望授之以真正的入門之道,一窺C++知識全景,并順著筆者的思路逐步深入C++知識領(lǐng)域,掌握其精髓,成為一名合格的C++程序員。本書對具有多年c++編程經(jīng)驗的老手也有很好的幫助,對他們系統(tǒng)地理解C++知識亦有諸多裨益。同樣一本書,初學(xué)者會有初學(xué)者的認(rèn)識,進(jìn)階者會有進(jìn)階者的理解,編程多年的老手也會另有一番領(lǐng)悟;同樣一本書,在不同層次、不同階段,有不同的收獲,這是很自然的事情。
內(nèi)容概要
本書把C++知識按照實際開發(fā)工作的需要,分為C語言、C++和STL等3部分,共分10章,主要講解C++在實際工作中需要掌握的知識、需要掌握多深,確保C++程序員在學(xué)習(xí)和工作中少走彎路,打下扎實的C++基本功。 本書適合大學(xué)計算機(jī)相關(guān)專業(yè)的學(xué)生、C++初學(xué)者、C++實際開發(fā)經(jīng)驗較少的程序員和實際開發(fā)經(jīng)驗只有2~3年的程序員。本書是C++程序員的求職和工作指南,是大學(xué)院校學(xué)生學(xué)習(xí)C++不可多得的輔助教材。同時,C語言部分的講解,也是C程序員必備的教材。 總之,本書通過作者多年的編程經(jīng)驗,講解了C/C++程序員在實際工作中需要掌握的知識,是C/C++程序員求職和謀求更高薪水的指南。
書籍目錄
前言第1章 C語言關(guān)鍵知識 1.1 C語言知識 1.2 C語言的核心:函數(shù)、變量和指針 1.2.1 C語言測試程序 1.2.2 內(nèi)存存儲 1.2.3 程序解答 1.2.4 常量和指針 1.2.5 臨時對象 1.2.6 被輕視的數(shù)據(jù)類型 1.2.7 小結(jié) 1.3 蘊(yùn)藏豐富的Hello World程序 1.3.1 開始Hello World 1.3.2 預(yù)處理 1.3.3 控制臺 1.3.4 調(diào)試 1.3.5 雜項第2章 關(guān)鍵算法和數(shù)據(jù)結(jié)構(gòu) 2.1 掌握算法的前提Ⅰ:單鏈表 2.1.1 線性表 2.1.2 單鏈表 2.1.3 單鏈表創(chuàng)建算法 2.1.4 單鏈表查找算法 2.1.5 單鏈表刪除算法 2.1.6 單鏈表插入算法 2.2 掌握算法的前提Ⅲ.循環(huán)鏈表 2.2.1 循環(huán)鏈表創(chuàng)建算法 2.2.2 循環(huán)鏈表查找算法 2.2.3 循環(huán)鏈表刪除算法 2.2.4 循環(huán)鏈表插入算法 2.3 被初學(xué)者忽視被資深者推崇的:雙向鏈表 2.3.1 雙向鏈表創(chuàng)建算法 2.3.2 雙向鏈表查找算法 2.3.3 雙向鏈表刪除算法 2.3.4 雙向鏈表插入算法 2.3.5 雙向循環(huán)鏈表 2.4 高手的摯愛:充分理解“樹” 2.4.1 樹的基本概念 2.4.2 二叉樹 2.4.3 線索二叉樹 2.5 幾棵最重要的“樹” 2.5.1 表達(dá)式樹 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語言的常用庫函數(shù) 3.1 庫函數(shù)的使用 3.1.1 使用MSDN 3.1.2 熟練使用庫函數(shù) 3.2 常用庫函數(shù) 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章 開始學(xué)習(xí)C++ 4.1 C++語言知識體系 4.2 預(yù)處理 4.2.1 常見的預(yù)處理 4.2.2 注意#pragma pack 4.2.3 其他需要知道的預(yù)處理宏 4.3 函數(shù) 4.3.1 聲明和定義函數(shù)、函數(shù)原型 4.3.2 記?。汉瘮?shù)聲明前面的壓棧聲明 4.3.3 必須理解:傳值調(diào)用和傳址調(diào)用 4.3.4 盡量采用傳址調(diào)用(傳指針或傳引用)來代替?zhèn)髦嫡{(diào)用 4.3.5 內(nèi)聯(lián)(inline)函數(shù) 4.3.6 知道:函數(shù)重載 4.3.7 理解extern”C” 4.3.8 理解函數(shù)指針 4.3.9 專家的最愛:回調(diào)函數(shù) 4.3.10 namespace命名空間 4.3.11 STL的基礎(chǔ):函數(shù)模板第5章 C++類和繼承 5.1 快速了解類的基本概念 5.1.1 類和類對象的定義 5.1.2 靜態(tài)成員 5.1.3 友元 5.1.4 局部類和嵌套類 5.1.5 類模板 5.2 真正走入C++:類的構(gòu)造和析構(gòu) 5.2.1 new/delete和malloc/free以及定位new 5.2.2 構(gòu)造函數(shù)和析構(gòu)函數(shù) 5.2.3 默認(rèn)構(gòu)造函數(shù) 5.2.4 類的拷貝構(gòu)造函數(shù) 5.2.5 在含有指針數(shù)據(jù)成員的時候構(gòu)建自己的拷貝構(gòu)造函數(shù) 5.2.6 類的賦值和拷貝構(gòu)造函數(shù)必須同時設(shè)計,盡量用拷貝構(gòu)造來代替賦值 5.2.7 類的成員初始化表 5.3 C++九鼎之器:類的繼承 5.3.1 繼承和派生 5.3.2 記住常用的繼承關(guān)系是公有繼承 5.3.3 構(gòu)造函數(shù)、析構(gòu)函數(shù)在繼承關(guān)系中調(diào)用的優(yōu)先順序 5.3.4 多繼承 5.4 C++虛函數(shù) 5.4.1 虛函數(shù) 5.4.2 靜態(tài)聯(lián)編和動態(tài)聯(lián)編 5.4.3 記住父類的析構(gòu)函數(shù)必須是:虛的析構(gòu)函數(shù) 5.4.4 再談多繼承 5.4.5 純虛函數(shù)和抽象類 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 一個小程序——需要仔細(xì)理解 6.2.5 程序剖析 6.2.6 從容器開始第7章 STL容器 7.1 用vector敲開STL的大門 7.1.1 vector概述 7.1.2 vector定義源碼 7.1.3 vector成員函數(shù) 7.1.4 vector數(shù)據(jù)結(jié)構(gòu)說明 7.2 雙向循環(huán)鏈表list 7.2.1 list概述 7.2.2 list定義源碼 7.2.3 list成員函數(shù) 7.2.4 list數(shù)據(jù)結(jié)構(gòu)說明 7.3 慎用deque 7.3.1 deque概述 7.3.2 deque定義源碼 7.3.3 deque成員函數(shù) 7.3.4 deque數(shù)據(jù)結(jié)構(gòu)說明 7.4 deque的stack、queue與vector的priority_queue 7.4.1 stack概述 7.4.2 queue概述 7.4.3 priority—queue概述 7.4.4 小結(jié) 7.5 關(guān)聯(lián)容器 7.5.1 關(guān)聯(lián)容器概述 7.5.2 紅黑樹回顧 7.5.3 紅黑樹定義源碼 7.6 set 7.6.1 set概述 7.6.2 set定義源碼 7.6.3 set成員函數(shù) 7.6.4 set數(shù)據(jù)結(jié)構(gòu) 7.7 map 7.7.1 map概述 7.7.2 map定義源碼 7.7.3 map成員函數(shù) 7.7.4 map數(shù)據(jù)結(jié)構(gòu) 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章 配置器、函數(shù)對象和適配器 9.1 配置器allocator 9.1.1 初窺配置器 9.1.2 P.J.Plauger版本的配置器 9.1.3 SGI版本的配置器 9.2 函數(shù)對象functors/function obiects(又稱仿函數(shù)) 9.2.1 初窺函數(shù)對象 9.2.2 一元函數(shù)對象和二元函數(shù)對象 9.2.3 常用函數(shù)對象 9.3 適配器adapter(又稱配接器) 9.3.1 容器適配器container adapter 9.3.2 迭代器適配器iterator adapter 9.3.3 函數(shù)適配器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 隨機(jī)訪問迭代器RandomAccesslterator 10.3 常用算法
章節(jié)摘錄
插圖:在給出答案之前,先來了解一下C/C++中的內(nèi)存存儲區(qū)的情況,這很重要。不了解C/C++的內(nèi)存存儲區(qū),就不可能把程序中的問題解答出來,也不可能正確地解釋其中的原因。在C/C++中,通??梢园褍?nèi)存理解成4個分區(qū):棧、堆、全局/靜態(tài)存儲區(qū)和常量存儲區(qū)。(1)棧:通常是用于那些在編譯期間就能確定存儲大小的變量的存儲區(qū),用于在函數(shù)作用域內(nèi)創(chuàng)建、在離開作用域后自動銷毀的變量的存儲區(qū)。通常是局部變量、函數(shù)參數(shù)等的存儲區(qū)。它的存儲空間是連續(xù)的,兩個緊挨著定義的局部變量,它們的存儲空間也是緊挨著的。棧的大小是有限制的,通常Visualc++編譯器默認(rèn)棧的大小是1M,所以不要定義inta[1000000]這樣的超大數(shù)組。(2)堆:通常是用于那些在編譯期間不能確定存儲大小的變量的存儲區(qū),它的存儲空間是不連續(xù)的,一般由malloc(或new)函數(shù)來分配內(nèi)存塊,并且需要用free(或delete)釋放內(nèi)存。如果程序員沒有釋放掉,那么就會出現(xiàn)常說的內(nèi)存泄漏問題。需要注意的是,兩個緊挨著定義的指針變量,所指向的malloc出來的兩塊內(nèi)存并不一定是緊挨著的。另外需要注意的一點是,堆的大小幾乎是不受限制的,理論上每個程序最大可達(dá)4GB。(3)全局/靜態(tài)存儲區(qū):和“?!币粯?,通常是用于那些在編譯期間就能確定存儲大小的變量的存儲區(qū),但它用于的是在整個程序運(yùn)行期間都可見的全局變量和靜態(tài)變量。(4)常量存儲區(qū):和“全局/靜態(tài)存儲區(qū)”一樣,通常是用于那些在編譯期間就能確定存儲大小的常量的存儲區(qū),并且在程序運(yùn)行期間,存儲區(qū)內(nèi)的常量也是全局可見的。這是一塊比較特殊的存儲區(qū),它們里面存放的是常量,不允許被修改。現(xiàn)在,已經(jīng)了解了C/C++內(nèi)存的存儲情況,接下來分析程序的5個問題并給出答案。
編輯推薦
《C++編程關(guān)鍵路徑:程序員求職指南》詳細(xì)講解了C/C++程序員在實際工作中需要掌握的知識。具有獨創(chuàng)性,按照實際工作的需要,把C語言、C++和STL融合在一本書中進(jìn)行討論。全面介紹了C++編程中最實用、最重要、最關(guān)鍵的知識。確保C/C++程序員在學(xué)習(xí)和工作中少走彎路,打下扎實的C++基本功。
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載