BohYoh.comトップページへ

プログラミング言語C++ 第4版

本書の概略 前書き 目 次 電子書籍版について 発行日・履歴 著書のページ


 目次

第Ⅰ部 はじめに

第1章 本書の読み進め方

1.1 本書の構成
1.1.1 はじめに
1.1.2 基本機能
1.1.3 抽象化のメカニズム
1.1.4 標準ライブラリ
1.1.5 サンプルコードと参照
1.2 C++の設計
1.2.1 プログラミングスタイル
1.2.2 型チェック
1.2.3 C言語との互換性
1.2.4 言語とライブラリとシステム
1.3 C++の学習
1.3.1 C++プログラミング
1.3.2 C++プログラマへの提言
1.3.3 C言語プログラマへの提言
1.3.4 Javaプログラマへの提言
1.4 歴史
1.4.1 時系列
1.4.2 黎明期
1.4.3 1998年版の標準
1.4.4 2011年版の標準
1.4.5 C++はどのように使われているのか
1.5 アドバイス
1.6 参考文献

第2章 C++を探検しよう:基本

2.1 はじめに
2.2 基本
2.2.1 Hello, World!
2.2.2 型と変数と算術演算
2.2.3 定数
2.2.4 条件評価と繰返し
2.2.5 ポインタと配列と繰返し
2.3 ユーザ定義型
2.3.1 構造体
2.3.2 クラス
2.3.3 列挙体
2.4 モジュール性
2.4.1 分割コンパイル
2.4.2 名前空間
2.4.3 エラー処理
2.5 まとめ
2.6 アドバイス

第3章 C++を探検しよう:抽象化のメカニズム

3.1 はじめに
3.2 クラス
3.2.1 具象型
3.2.2 抽象型
3.2.3 仮想関数
3.2.4 クラス階層
3.3 コピーとムーブ
3.3.1 コンテナのコピー
3.3.2 コンテナのムーブ
3.3.3 資源管理
3.3.4 演算子の抑制
3.4 テンプレート
3.4.1 パラメータ化された型
3.4.2 関数テンプレート
3.4.3 関数オブジェクト
3.4.4 可変個引数テンプレート
3.4.5 別名
3.5 アドバイス

第4章 C++を探検しよう:コンテナとアルゴリズム

4.1 ライブラリ
4.1.1 標準ライブラリ概要
4.1.2 標準ライブラリヘッダと名前空間
4.2 文字列
4.3 ストリーム入出力
4.3.1 出力
4.3.2 入力
4.3.3 ユーザ定義型の入出力
4.4 コンテナ
4.4.1 vector
4.4.2 list
4.4.3 map
4.4.4 unordered_map
4.4.5 コンテナのまとめ
4.5 アルゴリズム
4.5.1 反復子の利用
4.5.2 反復子の型
4.5.3 ストリーム反復子
4.5.4 述語
4.5.5 アルゴリズムのまとめ
4.5.6 コンテナアルゴリズム
4.6 アドバイス

第5章 C++を探検しよう:並行処理とユーティリティ

5.1 はじめに
5.2 資源管理
5.2.1 unique_ptrとshared_ptr
5.3 並行処理
5.3.1 タスクとthread
5.3.2 引数の受渡し
5.3.3 結果の返却
5.3.4 データの共有
5.3.5 タスク間通信
5.4 小規模ユーティリティ
5.4.1 時間
5.4.2 型関数
5.4.3 pairとtuple
5.5 正規表現
5.6 数学ライブラリ
5.6.1 数学関数とアルゴリズム
5.6.2 複素数
5.6.3 乱数
5.6.4 ベクタの算術演算
5.6.5 数値の限界値
5.7 アドバイス

第Ⅱ部 基本機能

第6章 型と宣言

6.1 ISO C++標準
6.1.1 処理系
6.1.2 基本ソース文字セット
6.2 型
6.2.1 基本型
6.2.2 論理型
6.2.3 文字型
6.2.4 整数型
6.2.5 浮動小数点数型
6.2.6 接頭語と接尾語
6.2.7 void
6.2.8 大きさ
6.2.9 アラインメント
6.3 宣言
6.3.1 宣言の構造
6.3.2 複数の名前の宣言
6.3.3 名前
6.3.4 スコープ
6.3.5 初期化
6.3.6 型の導出:autoとdecltype()
6.4 オブジェクトと値
6.4.1 左辺値と右辺値
6.4.2 オブジェクトの生存期間
6.5 型別名
6.6 アドバイス

第7章 ポインタと配列と参照

7.1 はじめに
7.2 ポインタ
7.2.1 void*
7.2.2 nullptr
7.3 配列
7.3.1 配列の初期化
7.3.2 文字列リテラル
7.4 配列の内部を指すポインタ
7.4.1 配列の操作
7.4.2 多次元配列
7.4.3 配列の受渡し
7.5 ポインタとconst
7.6 ポインタと所有権
7.7 参照
7.7.1 左辺値参照
7.7.2 右辺値参照
7.7.3 参照への参照
7.7.4 ポインタと参照
7.8 アドバイス

第8章 構造体と共用体と列挙体

8.1 はじめに
8.2 構造体
8.2.1 structのレイアウト
8.2.2 structの名前
8.2.3 構造体とクラス
8.2.4 構造体と配列
8.2.5 型の等価性
8.2.6 POD
8.2.7 フィールド
8.3 共用体
8.3.1 共用体とクラス
8.3.2 無名共用体
8.4 列挙体
8.4.1 enum class
8.4.2 単なるenum
8.4.3 名前無しenum
8.5 アドバイス

第9章 文

9.1 はじめに
9.2 文の概要
9.3 文としての宣言
9.4 選択文
9.4.1 if文
9.4.2 switch文
9.4.3 条件内の宣言
9.5 繰返し文
9.5.1 範囲for文
9.5.2 for文
9.5.3 while文
9.5.4 do文
9.5.5 ループの終了
9.6 goto文
9.7 コメントとインデンテーション
9.8 アドバイス

第10章 式

10.1 はじめに
10.2 電卓プログラム
10.2.1 パーサ
10.2.2 入力
10.2.3 低水準の入力
10.2.4 エラー処理
10.2.5 ドライバ
10.2.6 ヘッダ
10.2.7 コマンドライン引数
10.2.8 スタイルについて一言
10.3 演算子の概要
10.3.1 演算結果
10.3.2 評価順序
10.3.3 演算子の優先順位
10.3.4 一時オブジェクト
10.4 定数式
10.4.1 シンボル定数
10.4.2 定数式中のconst
10.4.3 リテラル型
10.4.4 参照引数
10.4.5 アドレス定数式
10.5 暗黙の型変換
10.5.1 格上げ
10.5.2 変換
10.5.3 通常の算術変換
10.6 アドバイス

第11章 主要な演算子

11.1 いろいろな演算子
11.1.1 論理演算子
11.1.2 ビット単位の論理演算子
11.1.3 条件式
11.1.4 インクリメントとデクリメント
11.2 空き領域
11.2.1 メモリ管理
11.2.2 配列
11.2.3 メモリ領域の割当て
11.2.4 newの多重定義
11.3 並び
11.3.1 実装モデル
11.3.2 修飾並び
11.3.3 非修飾並び
11.4 ラムダ式
11.4.1 実装モデル
11.4.2 ラムダ式への変形
11.4.3 キャプチャ
11.4.4 呼出しとリターン
11.4.5 ラムダ式の型
11.5 明示的型変換
11.5.1 構築
11.5.2 名前付きキャスト
11.5.3 C言語形式キャスト
11.5.4 関数形式キャスト
11.6 アドバイス

第12章 関数

12.1 関数宣言
12.1.1 なぜ関数なのか?
12.1.2 関数宣言の構成要素
12.1.3 関数定義
12.1.4 値の返却
12.1.5 inline関数
12.1.6 constexpr関数
12.1.7 [[noreturn]]関数
12.1.8 局所変数
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.5 関数へのポインタ
12.6 マクロ
12.6.1 条件コンパイル
12.6.2 定義ずみマクロ
12.6.3 プラグマ
12.7 アドバイス

第13章 例外処理

13.1 エラー処理
13.1.1 例外
13.1.2 従来のエラー処理
13.1.3 ごまかしの対処
13.1.4 例外のもう一つの顔
13.1.5 例外を使えないとき
13.1.6 階層的エラー処理
13.1.7 例外と効率
13.2 例外安全性の保証
13.3 資源管理
13.3.1 finally
13.4 不変条件の強制
13.5 例外の送出と捕捉
13.5.1 例外の送出
13.5.2 例外の捕捉
13.5.3 例外とスレッド
13.6 vectorの実装
13.6.1 単純なvector
13.6.2 メモリ処理の分離
13.6.3 代入
13.6.4 要素数の変更
13.7 アドバイス

第14章 名前空間

14.1 構成上の問題
14.2 名前空間
14.2.1 明示的修飾
14.2.2 using宣言
14.2.3 using指令
14.2.4 実引数依存探索
14.2.5 名前空間はオープン
14.3 モジュール化とインタフェース
14.3.1 モジュールとしての名前空間
14.3.2 実装
14.3.3 インタフェースと実装
14.4 名前空間を用いた構成
14.4.1 利便性と安全性
14.4.2 名前空間別名
14.4.3 名前空間の合成
14.4.4 合成と選択
14.4.5 名前空間と多重定義
14.4.6 バージョン管理
14.4.7 入れ子の名前空間
14.4.8 名前無し名前空間
14.4.9 C言語のヘッダ
14.5 アドバイス

第15章 ソースファイルとプログラム

15.1 分割コンパイル
15.2 結合
15.2.1 ファイル内局所名
15.2.2 ヘッダ
15.2.3 単一定義則
15.2.4 標準ライブラリヘッダ
15.2.5 C++以外のコードとの結合
15.2.6 結合と関数へのポインタ
15.3 ヘッダの利用
15.3.1 単一ヘッダ構成
15.3.2 複数ヘッダ構成
15.3.3 インクルードガード
15.4 プログラム
15.4.1 非局所変数の初期化
15.4.2 初期化と並行処理
15.4.3 プログラムの終了
15.5 アドバイス

第Ⅲ部 抽象化のメカニズム

第16章 クラス

16.1 はじめに
16.2 クラスの基礎
16.2.1 メンバ関数
16.2.2 デフォルトのコピー
16.2.3 アクセス制御
16.2.4 classとstruct
16.2.5 コンストラクタ
16.2.6 explicitコンストラクタ
16.2.7 クラス内初期化子
16.2.8 クラス内関数定義
16.2.9 変更可能性
16.2.10 自己参照
16.2.11 メンバアクセス
16.2.12 staticメンバ
16.2.13 メンバ型
16.3 具象クラス
16.3.1 メンバ関数
16.3.2 ヘルパ関数
16.3.3 演算子の多重定義
16.3.4 具象クラスの重要性
16.4 アドバイス

第17章 構築と後始末とコピーとムーブ

17.1 はじめに
17.2 コンストラクタとデストラクタ
17.2.1 コンストラクタと不変条件
17.2.2 デストラクタと資源
17.2.3 基底とメンバのデストラクタ
17.2.4 コンストラクタとデストラクタの呼出し
17.2.5 virtualデストラクタ
17.3 クラスオブジェクトの初期化
17.3.1 コンストラクタがない場合の初期化
17.3.2 コンストラクタによる初期化
17.3.3 デフォルトコンストラクタ
17.3.4 初期化子並びコンストラクタ
17.4 メンバと基底の初期化
17.4.1 メンバの初期化
17.4.2 基底初期化子
17.4.3 委譲コンストラクタ
17.4.4 クラス内初期化子
17.4.5 staticメンバの初期化
17.5 コピーとムーブ
17.5.1 コピー
17.5.2 ムーブ
17.6 デフォルト演算の生成
17.6.1 明示的なデフォルト
17.6.2 デフォルト演算
17.6.3 デフォルト演算の利用
17.6.4 関数のdelete
17.7 アドバイス

第18章 演算子の多重定義

18.1 はじめに
18.2 演算子関数
18.2.1 単項演算子と2項演算子
18.2.2 演算子本来の意味
18.2.3 演算子とユーザ定義型
18.2.4 オブジェクトのやりとり
18.2.5 名前空間内の演算子
18.3 複素数型
18.3.1 メンバ演算子と非メンバ演算子
18.3.2 混合算術演算
18.3.3 変換
18.3.4 リテラル
18.3.5 アクセッサ関数
18.3.6 ヘルパ関数
18.4 型変換
18.4.1 変換演算子
18.4.2 explicit変換演算子
18.4.3 曖昧さ
18.5 アドバイス

第19章 特殊な演算子

19.1 はじめに
19.2 特殊な演算子
19.2.1 添字演算
19.2.2 関数呼出し
19.2.3 参照外し
19.2.4 インクリメントとデクリメント
19.2.5 メモリ確保と解放
19.2.6 ユーザ定義リテラル
19.3 文字列クラスString
19.3.1 基本演算
19.3.2 文字へのアクセス
19.3.3 内部表現
19.3.4 メンバ関数
19.3.5 ヘルパ関数
19.3.6 作成した文字列クラスの利用例
19.4 フレンド
19.4.1 フレンドの探索
19.4.2 フレンドとメンバ
19.5 アドバイス

第20章 派生クラス

20.1 はじめに
20.2 派生クラス
20.2.1 メンバ関数
20.2.2 コンストラクタとデストラクタ
20.3 クラス階層
20.3.1 型フィールド
20.3.2 仮想関数
20.3.3 明示的修飾
20.3.4 オーバライド制御
20.3.5 基底メンバのusing宣言
20.3.6 返却型緩和
20.4 抽象クラス
20.5 アクセス制御
20.5.1 protectedメンバ
20.5.2 基底クラスへのアクセス
20.5.3 using宣言とアクセス制御
20.6 メンバへのポインタ
20.6.1 メンバ関数へのポインタ
20.6.2 データメンバへのポインタ
20.6.3 基底のメンバと派生のメンバ
20.7 アドバイス

第21章 クラス階層

21.1 はじめに
21.2 クラス階層の設計
21.2.1 実装継承
21.2.2 インタフェース継承
21.2.3 別の実装
21.2.4 オブジェクト作成の局所化
21.3 多重継承
21.3.1 インタフェースの多重継承
21.3.2 多重実装クラス
21.3.3 曖昧さの解決
21.3.4 基底クラスの反復
21.3.5 仮想基底クラス
21.3.6 複製か仮想基底クラスか
21.4 アドバイス

第22章 実行時型情報

22.1 はじめに
22.2 クラス階層の移動
22.2.1 dynamic_cast
22.2.2 多重継承
22.2.3 static_castとdynamic_cast
22.2.4 インタフェースの復元
22.3 ダブルディスパッチとVisitorパターン
22.3.1 ダブルディスパッチ
22.3.2 Visitorパターン
22.4 構築と解体
22.5 型の識別
22.5.1 拡張型情報
22.6 RTTIの利用と悪用
22.7 アドバイス

第23章 テンプレート

23.1 導入と概要
23.2 単純な文字列テンプレート
23.2.1 テンプレート定義
23.2.2 テンプレート具現化
23.3 型チェック
23.3.1 型の等価性
23.3.2 エラー検出
23.4 クラステンプレートのメンバ
23.4.1 データメンバ
23.4.2 メンバ関数
23.4.3 メンバ型別名
23.4.4 staticメンバ
23.4.5 メンバ型
23.4.6 メンバテンプレート
23.4.7 フレンド
23.5 関数テンプレート
23.5.1 関数テンプレートの引数
23.5.2 関数テンプレートの引数の導出
23.5.3 関数テンプレートの多重定義
23.6 テンプレート別名
23.7 ソースコードの構成
23.7.1 結合
23.8 アドバイス

第24章 ジェネリックプログラミング

24.1 はじめに
24.2 アルゴリズムとリフティング
24.3 コンセプト
24.3.1 コンセプトの特定
24.3.2 コンセプトと制約
24.4 コンセプトの具象化
24.4.1 公理
24.4.2 複数引数のコンセプト
24.4.3 値コンセプト
24.4.4 制約判定
24.4.5 テンプレート定義判定
24.5 アドバイス

第25章 特殊化

25.1 はじめに
25.2 テンプレートの仮引数と実引数
25.2.1 引数としての型
25.2.2 引数としての値
25.2.3 引数としての処理
25.2.4 引数としてのテンプレート
25.2.5 デフォルトのテンプレート引数
25.3 特殊化
25.3.1 インタフェースの特殊化
25.3.2 一次テンプレート
25.3.3 特殊化の順番
25.3.4 関数テンプレートの特殊化
25.4 アドバイス

第26章 具現化

26.1 はじめに
26.2 テンプレート具現化
26.2.1 具現化はいつ必要となるのか?
26.2.2 具現化の手動制御
26.3 名前バインド
26.3.1 従属名
26.3.2 定義位置でのバインド
26.3.3 具現化位置でのバインド
26.3.4 複数の具現化位置
26.3.5 テンプレートと名前空間
26.3.6 過剰なADL
26.3.7 基底クラス内の名前
26.4 アドバイス

第27章 テンプレートと階層

27.1 はじめに
27.2 パラメータ化と階層
27.2.1 型の生成
27.2.2 テンプレートの変換
27.3 クラステンプレートの階層
27.3.1 インタフェースとしてのテンプレート
27.4 基底クラスとしてのテンプレート引数
27.4.1 データ構造の組立て
27.4.2 クラス階層の線形化
27.5 アドバイス

第28章 メタプログラミング

28.1 はじめに
28.2 型関数
28.2.1 型別名
28.2.2 型述語
28.2.3 関数の選択
28.2.4 特性
28.3 制御構造
28.3.1 選択
28.3.2 繰返しと再帰
28.3.3 メタプログラミングを利用すべき場面
28.4 条件付き定義:Enable_if
28.4.1 Enable_ifの利用
28.4.2 Enable_ifの実装
28.4.3 Enable_ifとコンセプト
28.4.4 Enable_ifの利用例
28.5 コンパイル時リスト:Tuple
28.5.1 単純な出力関数
28.5.2 要素アクセス
28.5.3 make_tuple
28.6 可変個引数テンプレート
28.6.1 型安全なprintf()
28.6.2 技術的詳細
28.6.3 転送
28.6.4 標準ライブラリのtuple
28.7 SI単位系の例題
28.7.1 Unit
28.7.2 Quantity
28.7.3 Unitリテラル
28.7.4 ユーティリティ関数
28.8 アドバイス

第29章 行列の設計

29.1 はじめに
29.1.1 基本的なMatrixの使い方
29.1.2 Matrixの要件
29.2 Matrixテンプレート
29.2.1 構築と代入
29.2.2 添字演算とスライシング
29.3 Matrixの算術演算
29.3.1 スカラ演算
29.3.2 行列の加算
29.3.3 乗算
29.4 Matrixの実装
29.4.1 slice()
29.4.2 Matrixのスライス
29.4.3 Matrix_ref
29.4.4 初期化子並びによるMatrixの初期化
29.4.5 Matrixのアクセス
29.4.6 ゼロ次元のMatrix
29.5 線形方程式の解
29.5.1 古典的なガウスの消去法
29.5.2 ピボット
29.5.3 動作確認
29.5.4 複合演算
29.6 アドバイス

第Ⅳ部 標準ライブラリ

第30章  標準ライブラリの概要

30.1 はじめに
30.1.1 標準ライブラリの機能
30.1.2 設計上の制約
30.1.3 解説方針
30.2 ヘッダ
30.3 言語の支援
30.3.1 initializer_listの支援
30.3.2 範囲for文の支援
30.4 エラー処理
30.4.1 例外
30.4.2 アサーション
30.4.3 system_error
30.5 アドバイス

第31章  STLコンテナ

31.1 導入
31.2 コンテナの概要
31.2.1 コンテナの内部表現
31.2.2 要素の要件
31.3 処理の概要
31.3.1 メンバ型
31.3.2 コンストラクタとデストラクタと代入
31.3.3 要素数と容量
31.3.4 反復子
31.3.5 要素アクセス
31.3.6 スタック処理
31.3.7 リスト処理
31.3.8 その他の処理
31.4 コンテナ
31.4.1 vector
31.4.2 リスト
31.4.3 連想コンテナ
31.5 コンテナアダプタ
31.5.1 stack
31.5.2 queue
31.5.3 priority_queue
31.6 アドバイス

第32章  STLアルゴリズム

32.1 はじめに
32.2 アルゴリズム
32.2.1 シーケンス
32.3 ポリシー引数
32.3.1 計算量
32.4 シーケンスを更新しないアルゴリズム
32.4.1 for_each()
32.4.2 シーケンス述語
32.4.3 count()
32.4.4 find()
32.4.5 equal()とmismatch()
32.4.6 search()
32.5 シーケンスを更新するアルゴリズム
32.5.1 copy()
32.5.2 unique()
32.5.3 remove()とreverse()とreplace()
32.5.4 rotate()とrandom_shuffle()とpartition()
32.5.5 順列
32.5.6 fill()
32.5.7 swap()
32.6 ソートと探索
32.6.1 2分探索
32.6.2 merge()
32.6.3 集合アルゴリズム
32.6.4 ヒープ
32.6.5 lexicographical_compare()
32.7 最小値と最大値
32.8 アドバイス

第33章  STL反復子

33.1 はじめに
33.1.1 反復子モデル
33.1.2 反復子カテゴリ
33.1.3 反復子の特性
33.1.4 反復子の処理
33.2 反復子アダプタ
33.2.1 逆進反復子
33.2.2 挿入反復子
33.2.3 ムーブ反復子
33.3 範囲アクセス関数
33.4 関数オブジェクト
33.5 関数アダプタ
33.5.1 bind()
33.5.2 mem_fn()
33.5.3 function
33.6 アドバイス

第34章  メモリと資源

34.1 はじめに
34.2 “コンテナ相当”
34.2.1 array
34.2.2 bitset
34.2.3 vector
34.2.4 タプル
34.3 資源管理ポインタ
34.3.1 unique_ptr
34.3.2 shared_ptr
34.3.3 weak_ptr
34.4 アロケータ
34.4.1 デフォルトアロケータ
34.4.2 アロケータの特性
34.4.3 ポインタの特性
34.4.4 スコープ付きアロケータ
34.5 ガーベジコレクションインタフェース
34.6 未初期化メモリ
34.6.1 一時バッファ
34.6.2 raw_storage_iterator
34.7 アドバイス

第35章  ユーティリティ

35.1 はじめに
35.2 時刻
35.2.1 duration
35.2.2 time_point
35.2.3 クロック
35.2.4 時間特性
35.3 コンパイル時の有理数演算
35.4 型関数
35.4.1 型特性
35.4.2 型生成器
35.5 小規模なユーティリティ
35.5.1 move()とforward()
35.5.2 swap()
35.5.3 関係演算子
35.5.4 比較演算とtype_infoのハッシュ演算
35.6 アドバイス

第36章  文字列

36.1 はじめに
36.2 文字クラス
36.2.1 文字クラス判定関数
36.2.2 文字特性
36.3 文字列
36.3.1 stringとC言語スタイルの文字列
36.3.2 コンストラクタ
36.3.3 基本演算
36.3.4 文字列の入出力
36.3.5 数値変換
36.3.6 STLライクな処理
36.3.7 findファミリ
36.3.8 部分文字列
36.4 アドバイス

第37章  正規表現

37.1 正規表現
37.1.1 正規表現の表記
37.2 regex
37.2.1 照合結果
37.2.2 書式化
37.3 正規表現の関数
37.3.1 regex_match()
37.3.2 regex_search()
37.3.3 regex_replace()
37.4 正規表現の反復子
37.4.1 regex_iterator
37.4.2 regex_token_iterator
37.5 regex_traits
37.6 アドバイス

第38章  入出力ストリーム

38.1 はじめに
38.2 入出力ストリームの階層
38.2.1 ファイルストリーム
38.2.2 文字列ストリーム
38.3 エラー処理
38.4 入出力処理
38.4.1 入力処理
38.4.2 出力処理
38.4.3 操作子
38.4.4 ストリームの状態
38.4.5 書式化
38.5 ストリーム反復子
38.6 バッファリング
38.6.1 出力ストリームとバッファ
38.6.2 入力ストリームとバッファ
38.6.3 バッファ反復子
38.7 アドバイス

第39章  ロケール

39.1 文化的な違いの取扱い
39.2 localeクラス
39.2.1 名前付きlocale
39.2.2 stringの比較
39.3 facetクラス
39.3.1 locale内facetへのアクセス
39.3.2 単純なユーザ定義facet
39.3.3 localeとfacetの利用
39.4 標準facet
39.4.1 stringの比較
39.4.2 数値の書式化
39.4.3 金額の書式化
39.4.4 日付と時刻の書式化
39.4.5 文字クラス
39.4.6 文字コードの変換
39.4.7 メッセージ
39.5 便利なインタフェース
39.5.1 文字クラス
39.5.2 文字の変換
39.5.3 文字列の変換
39.5.4 バッファの変換
39.6 アドバイス

第40章  数値演算

40.1 はじめに
40.2 数値の限界値
40.2.1 限界値マクロ
40.3 標準数学関数
40.4 複素数
40.5 数値配列:valarray
40.5.1 コンストラクタと代入
40.5.2 添字演算
40.5.3 演算
40.5.4 slice
40.5.5 slice_array
40.5.6 汎用のスライス
40.6 汎用数値アルゴリズム
40.6.1 accumulate()
40.6.2 inner_product()
40.6.3 partial_sum()とadjacent_difference()
40.6.4 iota()
40.7 乱数
40.7.1 乱数エンジン
40.7.2 乱数デバイス
40.7.3 分布
40.7.4 C言語スタイルの乱数
40.8 アドバイス

第41章  並行処理

41.1 導入
41.2 メモリモデル
41.2.1 メモリロケーション
41.2.2 命令の順序の変更
41.2.3 メモリオーダ
41.2.4 データ競合
41.3 アトミック性
41.3.1 atomic型
41.3.2 フラグとフェンス
41.4 volatile
41.5 アドバイス

第42章  スレッドとタスク

42.1 はじめに
42.2 スレッド
42.2.1 識別
42.2.2 構築
42.2.3 解体
42.2.4 join()
42.2.5 detach()
42.2.6 this_thread名前空間
42.2.7 threadの強制終了
42.2.8 thread_localデータ
42.3 データ競合の回避
42.3.1 mutex
42.3.2 複数のロック
42.3.3 call_once()
42.3.4 条件変数
42.4 タスクベースの並行処理
42.4.1 futureとpromise
42.4.2 promise
42.4.3 packaged_task
42.4.4 future
42.4.5 shared_future
42.4.6 async()
42.4.7 並列find()の具体例
42.5 アドバイス

第43章  標準Cライブラリ

43.1 はじめに
43.2 ファイル
43.3 printf()ファミリ
43.4 C言語スタイルの文字列
43.5 メモリ
43.6 日付と時刻
43.7 その他
43.8 アドバイス

第44章  互換性

44.1 はじめに
44.2 C++11の新機能
44.2.1 言語機能
44.2.2 標準ライブラリコンポーネント
44.2.3 非推奨とされた機能
44.2.4 以前のC++処理系の利用
44.3 CとC++の互換性
44.3.1 C言語とC++は兄弟
44.3.2 “無言の”違い
44.3.3 C++ではないC言語コード
44.3.4 C言語ではないC++コード
44.4 アドバイス
索引
翻訳者後書き


オンラインで購入できます!  □amazonで購入(紙書籍版:2色刷)

本書の概略 前書き 目 次 電子書籍版について 発行日・履歴 著書のページ