大道至簡——C++ STL(標準範本庫)精解 大道至简 C++ STL(标准模板库)精解

閆常友

  • 出版商: 機械工業
  • 出版日期: 2015-11-18
  • 售價: $750
  • 貴賓價: 9.5$713
  • 語言: 簡體中文
  • 頁數: 735
  • 裝訂: 平裝
  • ISBN: 7111513991
  • ISBN-13: 9787111513995
  • 相關分類: C++ 程式語言

立即出貨(限量) (庫存=2)

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

相關主題

商品描述

 

<內容簡介>

眾所周知,C++是在C語言之上發展起來的編程語言。幾十年的發展歷程,C++支持多種編程規範(過程化,面向對象,泛型)。並且C++國際標準不斷更新,不斷進步,尤其是C++14於2014年8月18日公佈。C++的使用領域眾廣,多用於系統開發,引擎開發,等領域,幾十年來一直是最受廣大用戶喜愛的編程語言之一。C++的STL算法庫對常用數據結構和常用算法進行了封裝。STL提供的算法對於廣大程序員而言是非常便捷的,避免了重複開發,提高效率。回顧幾年來C++程序開發在國內的發展情況,對於STL的認識和掌握還存在一些差距。本書獻給喜歡C++STL的朋友,當您看見這本書,您應該對C++STL已有了一定的瞭解,希望繼續深造;或者您已經暗下決心來學習它。那麼本書將是您很好的選擇。全書共分為十七個篇章及一個附錄。首章主要是介紹相關的基本概念和基礎知識,簡要介紹了書中後面會用到的一些模版類型。從第二章開始,直至第十七章,逐次介紹了字符串類模版,容器,算法庫,迭代器(訪問容器的接口),數值計算模版,輸入輸出類模版,異常處理類模版,通用工具類模版,語言支持類模版,檢測類模版,國際化類模版,仿函數,配置器,原子操作類,線性控制類模版,正則表達式類模版。附錄部分介紹了幾乎所有的傳統C庫函數中的數學計算類函數,和數值轉換類函數。這些函數原本屬於C標準函數庫所有,實際工作中使用頻率較高,特在此附錄,以饗廣大愛好者使用。學習本書內容需要您已經有了一定的C/C++基礎。按照章節的先後順序,由淺入深地講解C++STL應用開發技術。本書力求將STL涉及的問題,一一列出講解,使初學者能夠少走些彎路。

 

<章節目錄>

目錄
前言
內容提要
第1章預備知識及簡介
1.1基本概念
1.1.1何謂“命名空間”
1.1.2頭文件
1.1.3面向對象的程序設計
1.1.4 C++中的聲明和定義
1.1.5最簡單的C++程序
1.1.6指針
1.1.7函數
1.1.8文件
1.1.9編譯和鏈接
1.1.10程序啟動和終止
1.1.11異常處理
1.1.12預處理命令
1.1.13宏
1.2類模板定義
1.2.1類模板實例化
1.2.2類模板的成員函數
1.2.3類模板的靜態數據成員
1.3成員模板
1.4友元模板
1.5函數模板
1.6類模板的參數
1.7 STL簡介
1.7.1 STL歷史
1.7.2 STL組件
1.7. 3 STL基本結構
1.7.4 STL編程概述
1.7.5小結
1.8小結
第2章字符串類模板
2.1字符串類庫簡述
2.2字符的特點
2.3字符串類模板(basic_string)
2.4字符串通用操作
2.4.1構造器和析構器
2.4.2大小和容量
2.4.3元素存取(訪問)
2.4.4字符串比較
2.4.5字符串內容的修改和替換
2.4.6字符串聯接
2.4.7字符串I/ O操作
2.4.8字符串查找
2.4.9字符串對迭代器的支持
2.4.10字符串對配置器的支持
2.5小結
第3章容器——對象儲存器
3.1容器概念
3.2序列式容器
3.2.1 vector (向量)類模板
3.2.2 list(列表)類模板
3.2.3 deque(雙端隊列)類模板
3.3關聯式容器
3.3.1 set/multiset(集合)類模板
3.3.2 map/multimap(圖)類模板
3.4特殊容器用法
3.4.1 bitset(位集合)類模板
3.4.2 stack(棧)類模板
3.4.3 queue(隊列)類模板
3.4.4 priority queues(優先隊列)類模板
3.5小結
第4章STL算法
4.1算法庫簡介
4.2非修改性算法
4.2.1 for each()算法
4.2.2元素計數算法
4.2.3最小值和最大值算法
4.2.4搜索算法
4.2.5比較算法
4.3修改性算法
4.3.1複製
4.3.2轉換
4.3.3互換
4.3.4賦值
4.3.5替換
4.3.6逆轉
4.3.7旋轉
4.3.8排列
4.4排序及相關操作算法
4.4.1全部元素排序
4.4.2局部排序
4.4.3根據某個元素排序
4.4.4堆(Heap)操作算法
4.4.5容器合併、交集和差集算法
4.4.6搜索算法
4.5刪除算法
4.6小結
第5章迭代器––訪問容器的接口
5.1迭代器及其特性
5.2頭文件<iterator>
5.3迭代器類型詳述
5.3.1輸入型迭代器
5.3.2輸出型迭代器
5.3.3前向型迭代器
5.3.4雙向型迭代器
5.3.5隨機訪問型迭代器
5.3.6 vector迭代器的遞增和遞減
5.4迭代器配接器
5.4.1逆向型迭代器
5.4.2插入型迭代器
5.4.3流型迭代器
5.5迭代器輔助函數
5.5.1前進函數advance( )
5.5.2距離函數distance()
5.5.3交換兩個迭代器所指內容iter_swap()
5.6小結
第6章數值計算類模板
6.1複數運算
6.1.1一個複數運算例題
6.1.2複數類成員函數
6.1 .3複數類運算符
6.1.4複數類運算
6.1.5複數的超越函數運算
6.2數組(向量)運算
6.2.1類valarray
6.2.2數組子集類—類slice和類模板slice_array
6.2.3類gslice和類模板gslice_array
6.2.4類mask_array
6.2.5類indirect_array
6.3通用數值計算
6.3.1求和算法(accumulate())
6.3.2內積算法(inner_product())
6.3.3部分和算法(partial_sum() )
6.3.4序列相鄰差算法(adjacent_difference())
6.4全局性數學函數
6.5小結
第7章輸入輸出類模板
7.1 IOStream簡介
7.1.1 stream對象
7.1.2 stream類別
7.1.3 stream操作符
7.1.4操控器
7.2 IOStream基本類和標準IOStream對象
7.2.1頭文件
7.2.2標準stream操作符
7.2.3 stream狀態
7.2.4標準輸入和輸出函數
7.3格式化
7.3.1格式標誌
7.3.2 bool類型數據的格式控制
7.3.3詳解“字段寬度、填充字符和位置調整”
7.3.4正記號與大寫字符
7.3.5數值進制
7.3.6浮點數輸出
7.3.7一般性格式定義
7.4類streambuffer介紹
7.4.1流緩衝區
7.4.2緩衝區迭代器
7.4.3自定義緩衝區
7.5基於字符串的流
7.5.1 streambuf類
7.5.2類模板basic_istringstream
7.5.3類模板basic_ostringstream
7.5.4類模板basic_stringstream
7.6基於文件的流
7.6.1文件標識及其使用
7.6.2隨機訪問
7.6.3 4個類模板
7.6.4 C庫中的文件存取功能概述
7.7小結
第8章異常處理類模板
8.1異常的概念和基本思想
8.1 .1異常的概念
8.1.2異常的分類
8.1.3異常的捕捉和處理
8.1.4資源管理
8.1.5異常和效率
8.1.6異常的描述
8.1.7未捕捉的異常
8.2異常類及幾個重要問題
8.2.1類exception
8.2.2調用abort()
8.2.3堆棧解退
8.2.4錯誤代碼
8.2.5異常的迷失
8.2.6異常處理的局限性
8.3處理異常詳述
8.4異常的特殊處理函數
8.5小結
第9章通用工具類模板(Utility)
9.1通用工具庫簡介
9.1.1相等比較
9.1.2小於比較
9.1.3複製構造
9.1.4配置器要求
9.1.5運算符
9.1.6對組(pairs)
9.2動態內存管理
9.2.1默認配置器
9.2.2 raw storage iterator
9.2.3 temporary Buffers(臨時緩衝區)
9.2.4特定算法
9.2.5 C函數庫中的內存管理函數
9.3堆的內存分配
9.4輔助功能
9.4.1數值極限
9.4.2較大較小值(最大最小值)
9.4.3兩值交換
9.4.4輔助性比較
9.4.5頭文件cstdlib和cstddef簡介
9.5日期和時間
9.5.1 3個類型
9.5 .2結構體(tm)
9.5.3相關時間函數
9.5.4時間示例
9.6模板類auto_ptr
9.6.1 auto_ptr類構造函數
9.6.2類auto_ptr的成員及轉換
9.6.3使用類auto_ptr
9.7小結
第10章語言支持類模板
10.1類型
10.2執行屬性
10.2.1類模板numeric_limits及其成員
10.2.2 float_round_style和float_denorm_style
10.2.3數值極限的特化
10.2.4 C庫函數
10.2.5應用舉例
10.3程序的啟動和終止
10.4動態內存管理
10.4.1內存的分配和釋放
10.4.2內存分配錯誤
10.4.3應用舉例
10.5類型標識符
10.5.1類type_info
10.5.2類bad_cast
10.5.3類bad_typeid
10.5.4操作符typeid
10.5.5操作符dynamic_cast操作符
10.5.6應用舉例
10.6異常處理
10.6.1類exception
10.6.2特殊異常處理
10.6.3異常終止
10.6.4未捕獲異常(uncaught_exception)
10.6.5應用舉例
10.7其他運行支持
10.7.1概述
10.7.2應用舉例
10.8小結
第11章檢測類模板詳解
11.1異常類
11.1.1類logic_error
11.1.2類domain_error
11.1.3類invalid_argument
11.1.4類length_error
11.1.5類out_of_range
11.1.6類runtime_error
11.1.7類range_error
11.1.8類overflow_error
11.1.9類underflow_error(下溢出)
11.2斷言
11.3錯誤編碼
11.4小結
第十二章國際化類模板詳解
12.1國際化元素
12.2多種字符編碼
12.2.1寬字符和多字節文本
12.2.2字符特性
12.2.3特殊字符國際化
12.3類locale
12.3.1類locale概述
12.3.2類locale的facets
12.3.3區域表示和混合區域表示
12.3.4流和區域
12.3.5刻面的處理
12.4標準locale的分類
12.4.1類ctype
12.4.2數值類的locale類
12.4.3刻面numeric punctuation
12.4.4模版類collate
12.4.5類time
12.4.6類monetary
12.4.7類message retrieval
12.4. 8 Program-defined facets
12.4.9 C庫locale
12.5細述使用刻面
12.5.1數值的格式化
12.5.2時間/日期格式化
12.5.3貨幣符號的格式化
12.5.4字符的分類和轉換
12.5. 5字符串校勘
12.5.6信息國際化
12.6小結
第13章仿函數
13.1仿函數的概念
13.1.1仿函數的概念
13.1.2仿函數的作用
13.2預定義仿函數
13.3輔助用仿函數
13.3.1一元組合函數配接器
13.3.2二元組合函數配接器
13.4關係仿函數
13.4.1等於(equal_to<type>())
13.4.2不等於(not_equal_to<type>())
13.4.3小於(less <type>())
13.4.4大於(greater<type>())
13.4.5大於等於(greater _equal)和小於等於(less_equal)
13.5邏輯仿函數
13.5.1謂詞
13.5.2邏輯仿函數
13.6算術仿函數
13.6.1加減乘除仿函數
13.6.2 “求餘”仿函數和“求反”仿函數
13.7其他類型的仿函數
13.7.1證和映射
13.7.2仿函數hash和subtractive_rng
13.8適配器
13.8.1成員函數適配器
13.8.2其他適配器
13.9小結
第14章配置器詳解
14.1使用配置器
14.2 C++標準程序庫的默認配置器(標準配置器)
14.3自定義配置器
14.4配置類的詳細討論
14.4.1型別
14.4.2配置類的成員函數
14.4.3廣義配置器
14.4.4動態存儲
14.4.5 C風格的分配
14.5未初始化的內存
14.6配置器舉例
第15章原子操作類模版
15.1頭文件<atomic>簡介
15.1 .1無鎖屬性
15.1.2 3個模板
15.1.3原子模板的常規操作
15.1.4頭文件中的模板函數及算術運算符
15.1.5原子類型atomic_flag
15.2順序及一致性
15.3原子操作
15.3.1模板類atomic
15.3.2針對整型數據的特化模板
15.3.3針對指針的特化模板
15.4小結
第16章線程控制類模版
16.1要求和性能
16.1.1異常
16.1.2本地句柄
16.1.3可鎖定類型
16.2線程類
16.2.1線程類的成員變量id
16.2.2線程類的成員函數
16.2.3命名空間this_thread
16.2.4線程示例
16.3互斥
16.3.1 mutex模版類
16.3.2 lock模版類
16.3.3 call_once
16.4條件變量
16.4.1類condition_variable
16.4.2類condition_variable_any
16.5模板類future
16.5.1模板類future_error,future_errc和future_category以及共享狀態
16.5.2模板類promise
16.5.3模板類future
16.5.4模板類shared_future
16.5. 5仿函數asyn
16.5.6模板類packaged_task
16.6小結
第17章正則表達式
17.1定義及要求
17.2類模板basic_regex
17.2.1類模板basic_regex的聲明
17.2.2名稱空間std::regex_constants
17.2.3類regex_error
17.2. 4類模板regex_traits
17.2.5類basic_regex的使用
17.3類模板sub_match和match_results
17.3.1類模板sub_match
17.3.2類模板match_results
17.4正則表達式相關的3種算法
17.4.1正則匹配算法regex_match
17.4.2正則搜索算法regex_search
17.4.3正則替換算法regex_replace
17.5正則表達式的迭代器
17.5.1迭代器regex_iterator
17.5.2迭代器regex_token_iterator
17.6小結附錄附錄A數學函數A.1數學函數庫中的宏A.2浮點計算減法協議開關A.3數學庫中的宏函數A.4三角函數和反三角函數A.5指數和對數函數A.6冪函數和絕對值函數A.7誤差和gamma函數A.8近似取整函數A.9求餘函數A.10操作處理函數A.11最大值、最小值和正差函數A.12浮點乘加運算A.13比較函數(宏)附錄B數據類型轉換B.1字符轉整數函數(atoi()) B.2字符型轉換浮點型函數(atof())B.3整型數轉字符串(itoa()、ltoa()和ultoa())B.4浮點數轉換字符串函數

 

<作者介紹>

閆常友博士後,高級工程師,電力系統及其自動專業,九三學社社員,IEEE計算機協會會員,熱愛計算機語言和軟件開發,尤其對C/C++系列有獨到的見解和深刻認識。對計算機語言的長期使用和實踐,積累了些許的體會,拋磚引玉,寫出來供大家斟酌。希望對C++程序員提升開發能力有所幫助。已出版書籍:《跟我學Visual C++ 6.0》, 《不要重複發明輪子C++STL標準程序庫開髮指南》。