C++標准模板庫編程實戰

C++標准模板庫編程實戰
定價:419
NT $ 365
  • 作者:(美)IVOR HORTON
  • 出版社:清華大學出版社
  • 出版日期:2017-01-01
  • 語言:簡體中文
  • ISBN10:7302455805
  • ISBN13:9787302455806
  • 裝訂:464頁 / 普通級 / 1-1
 

內容簡介

《C++標准模板庫編程實戰》介紹最新的C++14標准的API、庫和擴展,以及如何將它們運用到C++14程序中。

在書中,作者IvorHorton則闡述了什麼是STL,以及如何將它們應用到程序中。

我們將學習如何使用容器、迭代器,以及如何定義、創建和應用算法。此外,還將學習函數對象和適配器,以及它們的用法。

閱讀完本書之后,你將能夠了解如何擴展STL,如何定義自定義類型的C++組件,你還將能夠定義既滿足C++STL要求又遵從最常見的設計模式和較佳實踐的自定義類型。

標准庫是C++標准的一個基本部分,它為C++程序員提供了一套全面而又高效的工具,還提供了一些適用於多種類型程序的可重用組件。

◆如何在C++程序中使用STL
◆如何使用容器
◆如何使用迭代器
◆如何定義、生成和運用算法
◆如何使用函數對象
◆如何擴展STL,以及如何定義自定義類型的組件
◆如何使用適配器
◆如何定義自定義類型,使之既滿足C++STL的要求又遵從通用的設計模式和較佳實踐

Ivor Horton是世界著名計算機圖書作家,獨立顧問,幫助無數程序員步入編程殿堂。他曾在IBM工作多年,以優異成績擁有數學學士學位。
他的資歷包括:使用大多數語言(如在多種機器上使用匯編語言和高級語言)進行編程,實時編程,設計和實現實時閉環工業控制系統。Horton擁有豐富的面向工程師和科學家的編程教學經驗(教學內容包括C、C++、Fortran、PL/1、APL等)。同時,他還是機械、加工和電子CAD系統、機械CAM系統和DNC/CNC系統方面的專家。


 

目錄

第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
網路書店 類別 折扣 價格
  1. 新書
    87
    $365