C++ 標準模板庫編程實戰 Using the C++ Standard Template Libraries

[美] Ivor Horton 著 郭小虎、程聰 譯

  • C++ 標準模板庫編程實戰-preview-1
  • C++ 標準模板庫編程實戰-preview-2
  • C++ 標準模板庫編程實戰-preview-3
C++ 標準模板庫編程實戰-preview-1

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

商品描述

<內容簡介>

《C++標準模板庫編程實戰》介紹最新的C++14標準的API、庫和擴展,以及如何將它們運用到C++14程序中。在書中,作者Ivor Horton則闡述了什麼是STL,以及如何將它們應用到程序中。我們將學習如何使用容器、迭代器,以及如何定義、創建和應用算法。此外,還將學習函數對象和適配器,以及它們的用法。
閱讀完本書之後,你將能夠瞭解如何擴展STL,如何定義自定義類型的C++組件,你還將能夠定義既滿足C++ STL要求又遵從最常見的設計模式和較佳實踐的自定義類型。
標準庫是C++標準的一個基本部分,它為C++程序員提供了一套全面而又高效的工具,還提供了一些適用於多種類型程序的可重用組件。
主要內容
◆如何在C++程序中使用STL
◆如何使用容器
◆如何使用迭代器
◆如何定義、生成和運用算法
◆如何使用函數對象
◆如何擴展STL,以及如何定義自定義類型的組件
◆如何使用適配器
◆如何定義自定義類型,使之既滿足C++ STL的要求又遵從通用的設計模
式和較佳實踐

<章節目錄>

第1章STL介紹1
1.1基本思想2
1.2模板2
1.3容器6
1.4迭代器7
1.4.1獲取迭代器8
1.4.2迭代器的類別8
1.4.3流迭代器11
1.4.4迭代器適配器12
1.5迭代器上的運算14
1.6智能指針14
1.6.1使用unique_ptr<T>指針16
1.6.2使用shared_ptr<T>指針18
1.6.3weak_ptr<T>指針21
1.7算法22
1.8將函數作為實參傳入23
1.8.1函數對象23
1.8.2lambda表達式24
1.9小結28
練習29
第2章使用序列容器31
2.1序列容器31
2.2使用array<T,N>容器35
2.2.1訪問元素36
2.2.2使用數組容器的迭代器39
2.2.3比較數組容器41
2.3使用vector<T>容器42
2.3.1創建vector<T>容器42
2.3.2vector的容量和大小44
2.3.3訪問元素45
2.3.4使用vector容器的迭代器46
2.3.5向vector容器中添加元素49
2.3.6刪除元素53
2.3.7vector<bool>容器57
2.4使用deque<T>容器58
2.4.1生成deque容器58
2.4.2訪問元素59
2.4. 3添加和移除元素59
2.4.4替換deque容器中的內容60
2.5使用list<T>容器62
2.5.1生成list容器63
2.5.2添加元素63
2.5.3移除元素65
2.5.4排序和合併元素66
2.5.5訪問元素69
2.6使用forward_list<T>容器71
2.7自定義迭代器76
2.7.1STL迭代器的要求76
2.7.2走進STL77
2.8本章小結86
練習87
第3章容器適配器89
3.1什麼是容器適配器89
3.2創建和使用stack<T>容器適配器90
3.3創建和使用queue<T>容器適配器95
3.3.1queue操作96
3.3.2queue容器的實際使用97
3.4使用priority_queue<T>容器適配器102
3.4 .1創建priority_queue103
3.4.2priority_queue操作104
3.5堆107
3.5.1創建堆108
3.5.2堆操作110
3.6在容器中保存指針116
3.6.1在序列容器中保存指針116
3.6.2在優先級隊列中存儲指針123
3.6.3指針的堆125
3.6.4基類指針的容器125
3.6.5對指針序列應用算法129
3.7本章小結130
練習130
第4章map容器131
4.1map容器介紹131
4.2map容器的用法132
4.2.1創建map容器134
4.2.2map元素的插入135
4.2.3在map中構造元素142
4.2.4訪問map中的元素142
4.2.5刪除元素152
4.3pair<>和tuple<>的用法152
4.3 .1pair的操作153
4.3.2tuple的操作156
4.3.3tuples和pairs實戰158
4.4multimap容器的用法163
4.5改變比較函數168
4.5.1greater<T>對象的用法168
4.5.2用自定義的函數對象來比較元素169
4.6哈希170
4.7unordered_map容器的用法173
4.7.1生成和管理unordered_map容器175
4.7.2調整格子個數177
4.7.3插入元素178
4.7.4訪問元素179
4.7.5移除元素180
4.7. 6訪問格子180
4.8unordered_multimap容器的用法184
4.9本章小結192
練習193
第5章set的使用195
5.1理解set容器195
5.2使用set<T>容器196
5.2.1添加和移除元素197
5.2.2訪問元素199
5.2.3使用set199
5.2.4set迭代器209
5.2.5在set容器中保存指針209
5.3使用multiset<T>容器215
5.3.1保存派生類對象的指針217
5.3.2定義容器219
5.3.3定義示例的main()函數220
5.4unordered_set<T>容器223
5.4.1添加元素224
5.4.2檢索元素225
5.4.3刪除元素226
5.4.4創建格子列表227
5.5使用unordered_multiset<T>容器228
5.6集合運算233
5.6.1set_union()算法234
5.6.2set_intersection()算法235
5.6.3set_difference()算法236
5.6.4set_symmetric_difference()算法236
5.6.5includes()算法236
5.6.6集合運算的運用238
5.7本章小結240
練習240
第6章排序、合併、搜索和分區243
6.1序列排序243
6.1.1排序以及相等元素的順序246
6.1.2部分排序247
6.1.3測試排序序列250
6.2合併序列251
6.3搜索序列260
6.3.1在序列中查找元素260
6.3.2在序列中查找任意範圍的元素262
6.3.3在序列中查找多個元素264
6.4分區序列268
6.4.1partition_copy()算法270
6.4.2partition_point()算法271
6.5二分查找算法272
6.5.1binary_search()算法273
6.5.2lower_bound()算法274
6.5.3equal_range()算法274
6.6本章小結277
練習278
第7章更多的算法279
7.1檢查元素的屬性279
7.2序列的比較281
7.2.1查找序列的不同之處283
7.2.2按字典序比較序列286
7.2.3序列的排列287
7.3複製序列292
7.3.1複製一定數目的元素292
7.3.2條件複製292
7.4複製和反向元素順序296
7.5複製一個刪除相鄰重複元素的序列297
7.6從序列中移除相鄰的重複元素298
7.7旋轉序列299
7.8移動序列301
7.9從序列中移除元素303
7.10設置和修改序列中的元素305
7.10. 1用函數生成元素的值306
7.10.2轉換序列307
7.10.3替換序列中的元素310
7.11算法的應用311
7.12本章小結315
練習320
第8章生成隨機數321
8.1什麼是隨機數321
8.2概率、分佈以及熵322
8.2.1什麼是概率322
8.2.2什麼是分佈322
8.2.3什麼是熵324
8.3用STL生成隨機數324
8.3.1生成隨機數的種子325
8.3.2獲取隨機種子325
8.3. 3種子序列326
8.4分佈類329
8.4.1默認隨機數生成器329
8.4.2創建分佈對象330
8.4.3均勻分佈331
8.4.4正態分佈342
8.4.5對數分佈347
8.4.6其他和正態分佈相關的分佈350
8.4.7抽樣分佈351
8.4.8其他分佈365
8.5隨機數生成引擎和生成器370
8.5.1線性同餘引擎371
8.5.2馬特賽特旋轉演算法引擎372
8.5.3帶進制減法引擎372
8.6重組元素序列373
8.7本章小結374
練習375
第9章流操作377
9.1流迭代器377
9.1.1輸入流迭代器377
9.1.2輸出流迭代器381
9.2重載插入和提取運算符383
9.3對文件使用流迭代器384
9.3.1文件流385
9.3.2文件流類的模板385
9.3.3用流迭代器進行文件輸入386
9.3.4用流迭代器來反復讀文件388
9.3 .5用流迭代器輸出文件390
9.4流迭代器和算法391
9.5流緩衝區迭代器395
9.5.1輸入流緩衝區迭代器395
9.5.2輸出流緩衝區迭代器396
9.5.3對文件流使用輸出流緩衝區迭代器397
9.6string流、流,以及流緩衝區迭代器399
9.7本章小結402
練習402
第10章使用數值、時間和復數403
10.1數值計算403
10.2數值算法403
10.2.1保存序列中的增量值404
10.2.2求序列的和405
10.2.3內積406
10.2.4相鄰差411
10.2.5部分和411
10.2.6極大值和極小值413
10.3保存和處理數值414
10.3 .1valarray對象的基本操作415
10.3.2一元運算符418
10.3.3用於valarray對象的複合賦值運算符419
10.3.4valarray對象的二元運算420
10.3.5訪問valarray對像中的元素421
10.3.6多個切片436
10.3.7選擇多行或多列438
10.3.8使用gslice對象439
10.3.9選擇元素的任意子集440
10.3.10有條件地選擇元素441
10.3.11有理數算法442
10.4時序模板445
10.4 .1定義duration446
10.4.2時鐘和時間點451
10.5複數458
10.5.1生成表示複數的對象459
10.5.2複數的運算460
10.5.3複數上的比較和其他運算460
10.5.4一個使用複數的簡單示例461
10.6本章小結463
練習464