幫助中心 | 我的帳號 | 關於我們

C++ Templates(第2版中文版)

  • 作者:(美)戴維·范德沃德//(德)尼古拉M.約祖蒂斯//(美)道格拉斯·格雷戈|責編:秦健|譯者:何榮華//王文斌//張毅峰//楊文波
  • 出版社:人民郵電
  • ISBN:9787115601513
  • 出版日期:2024/01/01
  • 裝幀:平裝
  • 頁數:618
人民幣:RMB 149.8 元      售價:
放入購物車
加入收藏夾

內容大鋼
    本書是一本全面介紹C++模板技術的圖書,主要內容涵蓋C++模板的基礎概念、語言細節、編程技巧、高級應用以及實用示例等。本書針對C++11、C++14、C++17標準進行了內容更新,並對很多新語言特性(包括變數模板、泛型lambda、類模板參數推導等)給出詳細解釋。通過閱讀本書,讀者可以深入理解C++模板技術,掌握開發有效、簡潔且易維護的軟體的原因、時機和方法。
    本書內容豐富,架構清晰,講解翔實,適合對C++模板技術感興趣的開發人員或愛好者閱讀。

作者介紹
(美)戴維·范德沃德//(德)尼古拉M.約祖蒂斯//(美)道格拉斯·格雷戈|責編:秦健|譯者:何榮華//王文斌//張毅峰//楊文波

目錄
第一部分  基礎知識
  第1章  函數模板
    1.1  函數模板初探
      1.1.1  定義模板
      1.1.2  使用模板
      1.1.3  兩階段編譯
    1.2  模板實參推導簡介
    1.3  多模板參數
      1.3.1  返回類型的模板參數
      1.3.2  推導返回類型
      1.3.3  返回類型為公共類型
    1.4  默認模板實參簡介
    1.5  重載函數模板簡介
    1.6  難道,我們不應該……
      1.6.1  傳值還是傳引用
      1.6.2  為什麼不使用inline
      1.6.3  為什麼不使用constexpr
    1.7  小結
  第2章  類模板
    2.1  類模板Stack的實現
      2.1.1  類模板的聲明
      2.1.2  成員函數的實現
    2.2  類模板Stack的使用
    2.3  部分使用類模板
    2.4  友元簡介
    2.5  類模板的特化
    2.6  偏特化
    2.7  默認類模板實參
    2.8  類型別名
    2.9  類模板實參推導
    2.10  模板化聚合體
    2.11  小結
  第3章  非類型模板參數
    3.1  非類型的類模板參數
    3.2  非類型的函數模板參數
    3.3  非類型模板參數的限制
    3.4  模板參數類型auto
    3.5  小結
  第4章  變參模板
    4.1  變參模板簡介
      4.1.1  變參模板示例
      4.1.2  變參和非變參模板的重載
      4.1.3  sizeof...運算符
    4.2  摺疊表達式
    4.3  變參模板應用
    4.4  變參類模板和變參表達式
      4.4.1  變參表達式
      4.4.2  變參索引
      4.4.3  變參類模板
      4.4.4  變參推導指引

      4.4.5  變參基類和using關鍵字
    4.5  小結
  第5章  基本技巧
    5.1  關鍵字typename
    5.2  零初始化
    5.3  使用this
    5.4  處理原始數組和字元串字面量的模板
    5.5  成員模板
      5.5.1  template構造
      5.5.2  泛型lambda和成員模板
    5.6  變數模板
    5.7  模板的模板參數簡介
    5.8  小結
  第6章  移動語義和enable_if
    6.1  完美轉發簡介
    6.2  特殊成員函數模板
    6.3  通過std::enable_if禁用模板
    6.4  使用enable_if
    6.5  使用概念簡化enable_if表達式
    6.6  小結
  第7章  傳值還是傳引用
    7.1  傳值
    7.2  傳引用
      7.2.1  傳遞常量引用
      7.2.2  傳遞非常量引用
      7.2.3  傳遞轉發引用
    7.3  使用std::ref()和std::cref()
    7.4  處理字元串字面量和原始數組
    7.5  處理返回值
    7.6  推薦的模板參數聲明方法
    7.7  小結
  第8章  編譯期編程
    8.1  模板元編程
    8.2  使用constexpr計算
    8.3  偏特化的執行路徑選擇
    8.4  SFINAE
    8.5  編譯期if簡介
    8.6  小結
  第9章  在實踐中使用模板
    9.1  包含模型簡介
      9.1.1  鏈接器錯誤
      9.1.2  頭文件中的模板
    9.2  模板和inline
    9.3  預編譯頭文件
    9.4  破譯大篇錯誤信息
    9.5  後記
    9.6  小結
  第10章  模板基本術語
    10.1  是「類模板」還是「模板類」
    10.2  替換、實例化和特化

    10.3  聲明和定義
    10.4  單一定義規則
    10.5  模板實參和模板形參
    10.6  小結
  第11章  泛型庫
    11.1  可調用對象
      11.1.1  函數對象的支持
      11.1.2  處理成員函數及額外的參數
      11.1.3  封裝函數調用
    11.2  實現泛型庫的其他工具
      11.2.1  類型特徵
      11.2.2  std::addressof()
      11.2.3  std::declval()
    11.3  完美轉發臨時變數
    11.4  作為模板參數的引用
    11.5  推遲估算
    11.6  關於泛型庫的思考
    11.7  小結
第二部分  深入模板
  第12章  深入模板基礎
    12.1  參數化的聲明
      12.1.1  虛成員函數
      12.1.2  模板的鏈接
      12.1.3  主模板
    12.2  模板參數
      12.2.1  類型參數
      12.2.2  非類型參數
      12.2.3  模板的模板參數
      12.2.4  模板參數包
      12.2.5  默認模板實參
    12.3  模板實參
      12.3.1  函數模板實參
      12.3.2  類型實參
      12.3.3  非類型模板實參
      12.3.4  模板的模板實參
      12.3.5  實參的等價性
    12.4  變參模板
      12.4.1  包擴展
      12.4.2  包擴展的時機
      12.4.3  函數參數包
      12.4.4  多重和嵌套包擴展
      12.4.5  零長度包擴展
      12.4.6  摺疊表達式
    12.5  友元
      12.5.1  類模板的友元類
      12.5.2  類模板的友元函數
      12.5.3  友元模板
    12.6  後記
  第13章  模板中的名稱
    13.1  名稱的分類

    13.2  名稱查找
      13.2.1  依賴於參數的查找
      13.2.2  依賴於參數的友元聲明的查找
      13.2.3  注入的類名稱
      13.2.4  當前的實例化
    13.3  解析模板
      13.3.1  非模板中的上下文相關性
      13.3.2  依賴類型的名稱
      13.3.3  依賴模板的名稱
      13.3.4  using聲明中的依賴型名稱
      13.3.5  ADL和顯式模板實參
      13.3.6  依賴型表達式
      13.3.7  編譯器錯誤
    13.4  繼承和類模板
      13.4.1  非依賴型基類
      13.4.2  依賴型基類
    13.5  後記
  第14章  實例化
    14.1  按需實例化
    14.2  延遲實例化
      14.2.1  部分和完全實例化
      14.2.2  實例化組件
    14.3  C++的實例化模型
      14.3.1  兩階段查找
      14.3.2  實例化點
      14.3.3  包含模型
    14.4  實現方案
      14.4.1  貪婪實例化
      14.4.2  查詢實例化
      14.4.3  迭代實例化
    14.5  顯式實例化
      14.5.1  手動實例化
      14.5.2  顯式實例化聲明
    14.6  編譯期的if語句
    14.7  標準庫
    14.8  後記
  第15章  模板實參推導
    15.1  推導的過程
    15.2  推導的上下文
    15.3  特殊的推導情況
    15.4  初始化列表
    15.5  參數包
    15.6  右值引用
      15.6.1  引用摺疊規則
      15.6.2  轉發引用
      15.6.3  完美轉發
      15.6.4  推導的意外情況
    15.7  SFINAE
    15.8  推導的限制
      15.8.1  可行的實參轉換

      15.8.2  類模板實參
      15.8.3  默認調用實參
      15.8.4  異常規範
    15.9  顯式函數模板參數
    15.10  基於初始化器和表達式的推導
      15.10.1  auto類型的規範
      15.10.2  使用decltype表示一個表達式的類型
      15.10.3  decltype(auto)
      15.10.4  auto推導的特殊情況
      15.10.5  結構化綁定
      15.10.6  泛型lambda表達式
    15.11  別名模板
    15.12  類模板參數推導
      15.12.1  推導指引
      15.12.2  隱式推導指引
      15.12.3  其他
    15.13  後記
  第16章  特化與重載
    16.1  當「泛型代碼」不是特別適用的時候
      16.1.1  透明自定義
      16.1.2  語義的透明性
    16.2  重載函數模板
      16.2.1  簽名
      16.2.2  重載的函數模板的局部排序
      16.2.3  正式的排序規則
      16.2.4  模板和非模板
      16.2.5  變參函數模板
    16.3  顯式特化
      16.3.1  全局的類模板特化
      16.3.2  全局的函數模板特化
      16.3.3  全局的變數模板特化
      16.3.4  全局的成員特化
    16.4  類模板偏特化
    16.5  變數模板偏特化
    16.6  後記
  第17章  未來方向
    17.1  寬鬆的typename規則
    17.2  廣義非類型模板參數
    17.3  函數模板的偏特化
    17.4  命名模板實參簡介
    17.5  重載類模板
    17.6  中間包擴展的演繹
    17.7  void的規則化
    17.8  模板的類型檢查
    17.9  反射元編程
    17.10  包管理工具
    17.11  模塊
第三部分  模板與設計
  第18章  模板的多態
    18.1  動多態

    18.2  靜多態
    18.3  動多態與靜多態
    18.4  使用概念
    18.5  新形式的設計模式
    18.6  泛型程序設計
    18.7  後記
  第19章  特徵的實現
    19.1  一個實例:累加一個序列
      19.1.1  固定特徵
      19.1.2  值特徵
      19.1.3  參數化特徵
    19.2  特徵、policy及policy類
      19.2.1  特徵和policy的區別
      19.2.2  成員模板和模板的模板參數
      19.2.3  組合多個policy和(或)特徵
      19.2.4  運用普通的迭代器進行累積
    19.3  類型函數
      19.3.1  元素類型
      19.3.2  轉換特徵
      19.3.3  謂詞特徵
      19.3.4  結果類型特徵
    19.4  基於SFINAE的特徵
      19.4.1  SFINAE函數重載
      19.4.2  SFINAE偏特化
      19.4.3  為SFINAE使用泛型lambda表達式
      19.4.4  SFINAE友好的特徵
    19.5  IsConvertibleT
    19.6  檢測成員
      19.6.1  檢測成員類型
      19.6.2  檢測任意的成員類型
      19.6.3  檢測nontype成員
      19.6.4  使用泛型lambda檢測成員
    19.7  其他特徵技術
      19.7.1  if-then-else
      19.7.2  檢測nonthrowing操作
      19.7.3  特徵的便利性
    19.8  類型分類
      19.8.1  確定基本類型
      19.8.2  確定複合類型
      19.8.3  識別函數類型
      19.8.4  確定類類型
      19.8.5  確定枚舉類型
    19.9  policy特徵
    19.10  在標準庫中
    19.11  後記
  第20章  類型屬性重載
    20.1  演算法特化
    20.2  標籤調度
    20.3  啟用禁用函數模板
      20.3.1  提供多種特化

      20.3.2  EnableIf去往何處
      20.3.3  編譯期if
      20.3.4  術語
    20.4  類特化
      20.4.1  啟用禁用類模板
      20.4.2  類模板的標籤調度
    20.5  實例化安全模板
    20.6  在標準庫中
    20.7  後記
  第21章  模板與繼承
    21.1  空基類優化
      21.1.1  布局原則
      21.1.2  作為基類的成員
    21.2  奇妙遞歸模板模式
      21.2.1  Barton-Nackman技巧
      21.2.2  運算符實現
      21.2.3  門面模式
    21.3  混入
      21.3.1  奇妙的混入
      21.3.2  參數化的虛擬性
    21.4  命名模板實參
    21.5  後記
  第22章  橋接靜多態與動多態
    22.1  函數對象、指針以及std::function
    22.2  泛化的函數指針
    22.3  橋接介面
    22.4  類型擦除
    22.5  可選的橋接
    22.6  性能考慮
    22.7  後記
  第23章  元編程
    23.1  現代C++元編程的狀況
      23.1.1  值元編程
      23.1.2  類型元編程
      23.1.3  混合元編程
      23.1.4  單位類型的混合元編程
    23.2  反射元編程的維度
    23.3  遞歸實例化的代價
    23.4  計算完備性
    23.5  遞歸實例化還是遞歸模板實參
    23.6  枚舉值還是靜態常量
    23.7  後記
  第24章  類型列表
    24.1  解剖一個類型列表
    24.2  類型列表演算法
      24.2.1  索引
      24.2.2  尋找最佳匹配
      24.2.3  追加元素到類型列表
      24.2.4  反轉類型列表
      24.2.5  轉化類型列表

      24.2.6  累加類型列表
      24.2.7  插入排序
    24.3  非類型類型列表
    24.4  使用包擴展來優化演算法
    24.5  cons風格的類型列表
    24.6  後記
  第25章  元組
    25.1  基礎元組設計
      25.1.1  存儲
      25.1.2  構造
    25.2  基礎元組運算
      25.2.1  比較
      25.2.2  輸出
    25.3  元組演算法
      25.3.1  作為類型列表
      25.3.2  增刪
      25.3.3  反轉
      25.3.4  索引列表
      25.3.5  用索引列表反轉
      25.3.6  重排和選擇
    25.4  展開元組
    25.5  優化元組
      25.5.1  元組和EBCO
      25.5.2  常數時間複雜度的get()
    25.6  元組索引
    25.7  後記
  第26章  可辨識聯合體
    26.1  存儲簡介
    26.2  設計
    26.3  值的查詢與提取
    26.4  元素初始化、賦值和析構
      26.4.1  初始化
      26.4.2  析構
      26.4.3  賦值
    26.5  訪問者
      26.5.1  訪問結果類型
      26.5.2  公共結果類型
    26.6  variant的初始化和賦值
    26.7  後記
  第27章  表達式模板
    27.1  臨時變數和割裂的循環
    27.2  在模板實參中對錶達式編碼
      27.2.1  表達式模板的操作數
      27.2.2  Array類型
      27.2.3  運算符
      27.2.4  回顧
      27.2.5  表達式模板賦值
    27.3  表達式模板的性能與局限
    27.4  後記
  第28章  調試模板

    28.1  淺層實例化
    28.2  靜態斷言
    28.3  原型
    28.4  追蹤器
    28.5  預言機
    28.6  後記
附錄A  單一定義規則
  A.1  編譯單元
  A.2  聲明和定義
  A.3  單一定義規則的細節
    A.3.1  程序中的單一定義約束
    A.3.2  編譯單元中的單一定義約束
    A.3.3  跨編譯單元的等價性約束
附錄B  值類別
  B.1  傳統的左值和右值
  B.2  C++11值類別
  B.3  使用decltype檢查值類別
  B.4  引用類型
附錄C  重載解析
  C.1  何時應用重載解析
  C.2  簡化過的重載解析
    C.2.1  成員函數的隱含實參
    C.2.2  精細完美匹配
  C.3  重載的細節
    C.3.1  非模板優先或更特化的模板
    C.3.2  轉換序列
    C.3.3  指針的轉型
    C.3.4  初始化列表
    C.3.5  仿函數和代理函數
    C.3.6  其他的重載情況
附錄D  標準庫類型實用程序
  D.1  使用類型特徵
    D.1.1  std::integral_constant和std::bool_constant
    D.1.2  使用特徵時應該知道的事
  D.2  基本和複合類型類別
    D.2.1  基本類型類別的測試
    D.2.2  複合類型類別的測試
  D.3  類型屬性和操作
    D.3.1  其他類型屬性
    D.3.2  特定操作測試
    D.3.3  類型之間的關係
  D.4  類型構造
  D.5  其他特徵
  D.6  組合類型特徵
  D.7  其他工具
附錄E  概念
  E.1  使用概念
  E.2  定義概念
  E.3  約束的重載
    E.3.1  約束的歸併

    E.3.2  約束和標籤調度
  E.4  概念小提示
    E.4.1  測試概念
    E.4.2  概念粒度
    E.4.3  二進位兼容性
術語表

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032