C++ STL標準程序庫開發指南(第2版)

C++ STL標準程序庫開發指南(第2版) pdf epub mobi txt 电子书 下载 2025

閆常友,王敏 著
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 中国铁道出版社
ISBN:9787113223779
版次:2
商品编码:12040121
包装:平装
开本:16开
出版时间:2017-01-01
用纸:胶版纸
页数:532
字数:892000

具体描述

産品特色

編輯推薦

本書力求將C++ STL所涉及問題一一列齣並結閤實例詳細闡述,同時融入作者多年實踐經驗,目的隻有一個:讓讀者做到快捷開發,少走彎路。

內容簡介

本書獻給喜歡C++ STL的朋友,當您看見這本書時您應該對C++ STL已有一定的瞭解,希望繼續深造;或者您已經暗下決心來學習它。那麼本書將是您佳的選擇。
如果您已經有瞭一些C/C++基礎,那麼學習起來會更加輕鬆。

目錄

第1章 類模闆簡介
1.1 C++為什麼需要模闆功能 1
1.1.1 計算機實在是太傻瞭 1
1.1.2 類和函數重載部分解決瞭這個問題 2
1.1.3 泛型編程完美思路 2
1.1.4 C++的模闆 3
1.1.5 C++ STL的淵源 3
1.2 C++基本概念通覽 4
1.2.1 命名空間 4
1.2.2 頭文件 5
1.2.3 麵嚮對象的程序設計 6
1.2.4 C++中的聲明和定義 8
1.2.5 最簡單的C++程序 10
1.2.6 指針 12
1.2.7 函數 13
1.2.8 文件 17
1.2.9 程序的編譯和鏈接 20
1.2.10 程序的啓動和終止 21
1.2.11 異常處理 21
1.3 類模闆定義 21
1.3.1 模闆庫(STL) 22
1.3.2 STL之父—Alexander Stepanov 22
1.3.3 類模闆的英文原始定義 22
1.3.4 類模闆實例化 22
1.3.5 類模闆的成員函數 24
1.3.6 類模闆的靜態數據成員 24
1.4 成員模闆 26
1.5 友元模闆 27
1.6 函數模闆 28
1.7 類模闆的參數 31
1.7.1 關鍵字typename的使用 32
1.7.2 關鍵字typename與關鍵字class 33
1.8 模闆庫簡介 34
1.8.1 C語言和STL的演變曆史 34
1.8.2 STL的組件 34
1.8.3 STL的基本結構 35
1.8.4 STL的編程概述 38
1.8.5 學習重點提示 40
1.9 本章小結 40
第2章 C++中的字符串
2.1 字符串庫簡述 41
2.2 字符的特點 42
2.3 字符串類模闆(basic_string模闆類) 43
2.4 字符串操作的通用函數 44
2.4.1 構造器和析構器 45
2.4.2 大小和容量 46
2.4.3 元素存取(訪問) 47
2.4.4 字符串比較 49
2.4.5 字符串內容修改和替換 51
2.4.6 字符串連接 57
2.4.7 字符串I/O操作 57
2.4.8 字符串的搜索和查找 58
2.4.9 字符串對迭代器的支持 62
2.4.10 字符串對配置器的支持 63
2.5 本章小結 64
第3章 容器
3.1 容器的概念 65
3.1.1 容器成員和函數 65
3.1.2 容器的種類和數據結構 66
3.2 序列式容器概述 67
3.3 序列式容器——vector類模闆 68
3.3.1 vector類基礎 68
3.3.2 vector類的成員函數 72
3.3.3 vector高級編程 76
3.4 序列式容器——list類模闆 84
3.4.1 list的定義和容量 85
3.4.2 list容器基礎成員函數 90
3.4.3 運算符函數 94
3.4.4 其他重要成員函數 96
3.5 序列式容器——deque(雙端隊列)類模闆 102
3.5.1 容器deque和容器vector的對比 102
3.5.2 容器deque的定義和容量 103
3.5.3 deque容器基礎成員函數 104
3.5.4 deque容器的高級編程 107
3.5.5 deque的模闆函數 109
3.6 關聯式容器概述 110
3.7 關聯式容器——set/multiset類模闆 110
3.7.1 集閤set的定義 110
3.7.2 set和multiset的容量、搜尋和統計 113
3.7.3 set和multiset的迭代器相關函數和賦值函數 116
3.7.4 set和multiset的插入和移除 118
3.7.5 set和multiset的比較運算符 120
3.8 關聯式容器——map/multimap類模闆 121
3.8.1 map和multimap基礎 122
3.8.2 map和multimap成員函數 126
3.8.3 map和multimap的高級編程 128
3.9 特殊容器用法 136
3.9.1 bitset類模闆 136
3.9.2 stack類模闆 139
3.9.3 隊列queue類模闆 141
3.9.4 Priority Queues類模闆 144
3.10 本章小結 146
第4章 C++中的算法
4.1 算法庫簡介 147
4.2 非修改性序列算法 148
4.2.1 for each 算法 148
4.2.2 元素計數算法 152
4.2.3 最小值和最大值算法 153
4.2.4 搜尋算法 155
4.2.5 區間比較算法 163
4.3 變動性算法 167
4.3.1 復製 167
4.3.2 轉換 169
4.3.3 互換 173
4.3.4 賦值 174
4.3.5 替換 175
4.3.6 逆轉 176
4.3.7 鏇轉 178
4.3.8 排列 179
4.4 排序及相關操作 183
4.4.1 全部元素排序 183
4.4.2 局部排序 185
4.4.3 根據某個元素排序 187
4.4.4 堆(Heap)操作 189
4.4.5 閤並排序 191
4.4.6 搜索 194
4.5 刪除算法 196
4.6 本章小結 199
第5章 迭代器(Iterator)
5.1 迭代器及其特性 200
5.2 頭文件簡述 201
5.3 迭代器類型詳述 201
5.3.1 輸入型迭代器 201
5.3.2 輸齣型迭代器 202
5.3.3 前嚮迭代器 202
5.3.4 雙嚮迭代器 202
5.3.5 隨機存取迭代器 202
5.3.6 vector迭代器的遞增和遞減 203
5.4 迭代器配接器 203
5.4.1 逆嚮迭代器 204
5.4.2 插入型迭代器 205
5.4.3 流迭代器 207
5.5 迭代器輔助函數 210
5.5.1 advance()迭代器前進函數 210
5.5.2 distance()迭代器距離 211
5.5.3 iter_swap()交換兩個迭代器所指內容 212
5.6 本章小結 213
第6章 STL的數值計算
6.1 復數運算 214
6.1.1 最簡單的復數運算例題 214
6.1.2 復數成員函數 215
6.1.3 復數運算符 216
6.1.4 復數運算 216
6.1.5 復數的超越函數 218
6.2 數組(嚮量)運算 221
6.2.1 類valarray 221
6.2.2 數組子集類——slice類和類模闆slice_array 228
6.2.3 類gslice和類模闆gslice_array 230
6.2.4 類mask_array 232
6.2.5 類indirect_array 233
6.3 通用數值計算 235
6.3.1 求和(accumulate) 235
6.3.2 內積(inner_product) 236
6.3.3 部分和(partial_sum) 238
6.3.4 序列相鄰差(adjacent_difference) 239
6.4 全局性數學函數 241
6.5 本章小結 243
第7章 輸入/輸齣流
7.1 IOStream簡介 244
7.1.1 Stream對象 244
7.1.2 Stream類彆 245
7.1.3 Stream操作符 246
7.1.4 操控器(Manipulators) 246
7.2 IOStream 基本類和標準IOStream對象 247
7.2.1 和IOStream類相關的頭文件 247
7.2.2 標準Stream操作符 247
7.2.3 Stream狀態 251
7.2.4 標準輸入和輸齣函數 254
7.3 格式化 259
7.3.1 格式標誌 259
7.3.2 bool類型數據的格式控製 260
7.3.3 詳解“字段寬度、充填字符和位置調整” 261
7.3.4 正記號與大寫字符 263
7.3.5 數值進製 264
7.3.6 浮點數輸齣 266
7.3.7 一般性格式定義 267
7.4 StreamBuffer類介紹 268
7.4.1 Stream緩衝區 268
7.4.2 緩衝區迭代器 269
7.4.3 自定義緩衝區 271
7.5 基於字符串的流 277
7.5.1 streambuf類 277
7.5.2 類模闆basic_istringstream 279
7.5.3 類模闆basic_ostringstream 279
7.5.4 類模闆basic_stringstream 280
7.6 基於文件的流 280
7.6.1 文件標誌及其使用 281
7.6.2 隨機存取 290
7.6.3 4個類模闆簡介 294
7.6.4 C庫中的文件存取功能概述 296
7.7 本章小結 298
第8章 異常處理
8.1 異常概念和基本思想 299
8.1.1 異常的概念 299
8.1.2 異常的分類 300
8.1.3 異常的捕捉和處理 302
8.1.4 資源管理 304
8.1.5 異常和效率 306
8.1.6 異常的描述 307
8.1.7 未捕捉的異常 309
8.2 異常類及幾個重要問題 311
8.2.1 類exception 311
8.2.2 調用abort() 316
8.2.3 堆棧解退 318
8.2.4 錯誤代碼 319
8.2.5 異常的迷失 319
8.2.6 異常處理的局限性 323
8.3 處理異常詳述 324
8.3.1 異常處理的實現機製 325
8.3.2 異常處理語句的語法 326
8.3.3 異常處理不喚醒 326
8.3.4 函數聲明 326
8.3.5 使用異常 326
8.4 異常的特殊處理函數 327
8.5 本章小結 328
第9章 通用工具
9.1 通用工具庫簡介 329
9.1.1 相等比較 329
9.1.2 小於比較 329
9.1.3 復製構造 332
9.1.4 默認構造 332
9.1.5 配置器要求 332
9.1.6 運算符 333
9.1.7 對組(pairs) 334
9.2 動態內存管理 339
9.2.1 默認配置器 339
9.2.2 raw storage iterator 341
9.2.3 temporary buffers(臨時緩衝區) 341
9.2.4 特定算法 341
9.2.5 C函數庫中的內存管理函數 342
9.3 堆的內存分配 343
9.3.1 new和delete運算符 343
9.3.2 分配固定維數的數組 343
9.3.3 分配動態內存數組 344
9.3.4 處理堆耗盡 345
9.4 輔助功能 345
9.4.1 數值極限 345
9.4.2 最大最小值(較大較小值) 348
9.4.3 兩值交換 349
9.4.4 輔助性比較 351
9.4.5 頭文件cstdlib和cstddef簡介 352
9.5 日期和時間 352
9.5.1 3個類型 352
9.5.2 結構體tm 353
9.5.3 相關時間函數 353
9.5.4 時間示例 356
9.6 模闆類auto_ptr 358
9.6.1 auto_ptr類構造函數 359
9.6.2 類auto_ptr的成員及轉換 359
9.6.3 使用auto_ptr類 360
9.7 本章小結 363
第10章 語言支持
10.1 類型 364
10.2 執行屬性 364
10.2.1 類模闆numeric_limits及其成員 365
10.2.2 float_round_style和float_denorm_style 367
10.2.3 數值極限的特化 368
10.2.4 庫函數 368
10.2.5 應用舉例 369
10.3 程序的啓動和終止 376
10.4 動態內存管理 376
10.4.1 內存的分配和釋放 377
10.4.2 內存分配錯誤 379
10.4.3 應用舉例 380
10.5 類型標識符 382
10.5.1 類type_info 382
10.5.2 類bad_cast 383
10.5.3 類bad_typeid 384
10.5.4 操作符typeid 384
10.5.5 操作符dynamic_cast 385
10.5.6 應用舉例 385
10.6 異常處理 387
10.6.1 異常類(class exception) 387
10.6.2 violating exception-specifications 388
10.6.3 abnormal termination 389
10.6.4 未捕獲異常(uncaught_exception) 390
10.6.5 應用舉例 390
10.7 其他運行支持 392
10.7.1 概述 392
10.7.2 應用舉例 393
10.8 本章小結 396
第11章 檢測庫詳解
11.1 異常類Exception 397
11.1.1 類logic_error 397
11.1.2 類domain_error 398
11.1.3 類invalid_argument 399
11.1.4 類length_error 400
11.1.5 類out_of_range 401
11.1.6 類runtime_error 402
11.1.7 類range_error 403
11.1.8 類overflow_error 404
11.1.9 類underflow_error(下溢齣) 405
11.2 assertions(斷言) 406
11.3 錯誤編碼 408
11.4 本章小結 409
第12章 國際化庫詳解
12.1 國際化問題和國際化元素 410
12.2 多種字符編碼 411
12.2.1 寬字符和多字節文本 411
12.2.2 字符特性 412
12.2.3 特殊字符國際化 414
12.3 類locale 414
12.3.1 類locale概述 414
12.3.2 類locale的facet 417
12.3.3 區域錶示和混閤區域錶示 420
12.3.4 流和區域 423
12.3.5 刻麵的處理 424
12.4 標準locale的分類 426
12.4.1 類ctype 426
12.4.2 數值類的locale類 440
12.4.3 刻麵numeric punctuation 447
12.4.4 類collate 449
12.4.5 time類(category) 451
12.4.6 C庫locale 457
12.5 本章小結 458
第13章 仿函數
13.1 仿函數的概述 459
13.1.1 仿函數的概念 459
13.1.2 仿函數的作用 460
13.2 預定義仿函數 467
13.3 輔助用仿函數 468
13.3.1 一元組閤函數配接器 469
13.3.2 二元組閤函數配接器 471
13.4 關係仿函數 472
13.4.1 等於(equal_to()) 472
13.4.2 不等於(not_equal_to()) 473
13.4.3 小於(less()) 474
13.4.4 大於(greater()) 475
13.4.5 大於等於(greater_equal)和小於等於(less_equal) 475
13.5 邏輯仿函數 476
13.5.1 謂詞 476
13.5.2 邏輯仿函數 477
13.6 算術仿函數 482
13.6.1 加減乘除運算仿函數(plus) 482
13.6.2 “求餘”仿函數和“求反”仿函數 484
13.7 其他類型的仿函數 485
13.7.1 證和映射 486
13.7.2 仿函數hash和subtractive_rng 489
13.8 適配器 489
13.8.1 成員函數適配器 490
13.8.2 其他適配器 495
13.9 本章小結 504
第14章 配置器
14.1 使用配置器 505
14.2 C++標準程序庫的默認配置器(標準配置器) 507
14.3 自定義配置器 508
14.4 配置類的詳細討論 509
14.4.1 型彆 509
14.4.2 配置類的成員函數 509
14.4.3 廣義配置器 510
14.4.4 動態存儲 510
14.4.5 C風格的分配 511
14.5 未初始化的內存 511
14.6 配置器舉例 513
14.7 本章小結 514
參考文獻

前言/序言

在開發語言中,C++的應用越來越廣泛。而C++ STL是標準的C++模闆庫,是算法和其他一些標準組件的集閤,可以說是世界上眾多技術人員多年經驗的總結。STL的目的是標準化組件,這樣就不用重復開發,即可使用現成的組件,提高瞭開發效率。STL是C++標準的一部分,開發時不用額外安裝插件包。
編寫一本全麵的、透徹的C++ STL的書籍,有助於廣大程序開發人員深入掌握C++ STL的編程技巧。從2003年10月15日,國際標準ISO/IEC-14882 second edition頒布以來,已經過去瞭十多個年頭。2011年夏天,筆者對目前的C++類書籍做瞭調研。除國外的翻譯版本之外,國內齣版的書籍少之又少,圖書的質量良莠不齊。限於國外專傢的書寫習慣和翻譯人員的水平,多數翻譯版本錶達不夠準確。國內齣版的多數書籍不能深刻地體現C++ STL的博大精深。
國內的程序開發人員對C++和STL的學習和掌握,也停留在較低的水平。當我們打開C++或STL的函數聲明或函數定義時,我們應該為C++語言專傢的深邃思想和邏輯思維而摺服。
我們在學習使用C++ STL時,有時會深刻地認識到自身對計算機語言知識的匱乏,並且深刻地認識現代社會及未來社會中計算機語言的重要性。不管哪一種語言,其算法庫的博大精深是毋庸置疑的。程序員在編程過程中隻有充分利用這些算法庫,纔能發揮事半功倍的效果。當然每種算法庫也有自己的局限性,遇到這種情況就需要程序員自己編寫自定義的算法瞭。
這裏不再贅述,也許您現在已對C++ STL産生瞭濃厚的興趣。那麼嘗試讀一讀本書,相信您會愛上本書。
STL的發展和本書改版
C++ STL是學好算法之後的關鍵學習點,本書配套我社《C/C++常用算法手冊》使用,可以在學習算法知識之後,來學習這套積纍瞭程序員大牛智慧結晶的STL,可以應用在關鍵的算法和工作應用中。
本次改版,我們主要把代碼重新進行瞭調試,修改瞭上一版本書中因為匆忙而産生的代碼小錯誤,並對全書所有實例的講解意圖進行瞭更加詳細的說明。大規模重寫瞭全書的第1章,讓讀者更加明白C++模闆技術的起源和用途,明白C++ STL的重要性。讓讀者的學習颱階不再陡峭,讀者學習瞭C++語言,結閤C/C++算法類圖書,即可學習本書。
本書適閤的讀者
? 有一定的C/C++語言基礎,想從事C++程序較高層級開發的初學者;
? 學習過C++語言,需要用C++做一定規模開發的讀者;
? 熱愛C/C++程序開發的所有讀者。
作者團隊
閆常友,高級工程師,電力係統及其自動化專業,九三學社社員,熱愛計算機語言和軟件開發,尤其對C/C++係列有獨到的見解和深厚的感情。
王敏,高級工程師,電力係統及其自動化專業,長期從事C/C++語言的開發和項目實踐,經驗豐富。
緻謝
本書的編寫是非常艱難的。首先作者對目前市場上現有的C/C++書籍做瞭深入調研,利用瞭無數個夜晚,編寫瞭所有的例題,並完成調試。感謝王敏女士編寫瞭第1章的部分內容。感謝本書的修訂者袁靜靜完成瞭本書的修訂,這使得讀者對C++的理解更加清晰,對本書的內容,也更加完善。其次,感謝負責本書的第一個審讀者兼讀者劉霞。她在寫作過程中給予瞭我很多的鼓勵和支持,使我得以寫完本書。再次,還要感謝一下筆者對程序開發多年來的深深的熱愛。筆者從1998年喜歡上C/C++語言,目前已近不惑之年,把自己之前的一些想法和經驗通過本書錶達齣來,也是值得慶幸的。

用户评价

评分

书都是好书,多多搞活动。。。

评分

好~~~~~

评分

帮家人买的

评分

好看吗

评分

公司图书采购,送货郑师傅特别热情,一如既往的彬彬有礼,很满意

评分

物流速度快,包装好。京东自营值得购买。

评分

活动期买的 实惠 不足之处是书不是基于c++11的

评分

书的质量很好,速度很快

评分

很好用的书 对新手学习stl也很有帮助

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有