目次
- はじめに
- 謝辞
- 本書の構成
- 本書の見方
CHAPTER 1 C++とは
- C++の歴史と特徴
- 主な処理系
CHAPTER 2 基本文法
- プログラムの例
- 識別子と文字セット
- COLUMN ユニバーサルキャラクタ名とは
- 予約語と記号
- コメント
- 型
- COLUMN オブジェクトのアドレスを取得するには
- cv修飾子
- COLUMN const修飾とvolatile修飾の混在
- 型の別名宣言
- COLUMN 複雑な関数ポインタの別名宣言とstd::function
- 型の自動推論と取得
- キャスト
- 動的な生成と破棄
- COLUMN new/deleteとメモリリーク
- サイズとアラインメント
- COLUMN アラインメントとは?
- リテラル
- COLUMN 生文字リテラルのデリミター
- COLUMN nullptrの型
- COLUMN ユーザー定義リテラルをコンパイル時定数にする
- 右辺値参照とムーブセマンティクス C++11
- 文(ステートメント)
- スコープ
- 関数
- COLUMN 可変長実引数について
- クラス
- メンバ変数・メンバ関数・メンバ型
- 継承
- COLUMN 仮想関数と非仮想関数の違いと多態性
- 関数オブジェクト
- オーバーロード
- テンプレート
- 定数式 C++11
- ラムダ式 C++11
- COLUMN ラムダ式の書式の応用
- プリプロセッサ
- COLUMN 条件付き取り込みで使用される条件式
- 名前空間
- 属性 C++11
CHAPTER 3 例外処理
- 概要
- 例外クラスを使い分ける
- 例外を送出しないことを明示する C++11
- システムのエラーを扱う
- 空の例外ポインタを作成する
- 現在送出されている例外オブジェクトを指し示す例外ポインタを取得する
- 例外ポインタが指し示している例外オブジェクトを再送出する
- 例外オブジェクトの例外ポインタを構築する
- 入れ子例外を作成する
- 入れ子の例外ポインタを取得する
- 入れ子の例外オブジェクトを再送出する
- 入れ子例外を送出する
CHAPTER 4 文字列
- 概要
- 文字列オブジェクトを構築する
- basic_stringリテラルで構築する C++14
- 文字列オブジェクトの基本操作
- 文字列の長さを取得する
- 文字列を空にする
- 文字列が空かどうかを判定する
- C言語インタフェースとやりとりする
- 文字列をイテレータを使用して操作する
- 文字列の一部を取得する
- 文字列を数値に変換する
- 数値を文字列に変換する
- 文字列を検索する
- 指定した位置の文字列を置換する
- 正規表現で検索する
- 正規表現で置換する
- 正規表現の構文を切り替える
- よく使う文字列アルゴリズムの実装と使い方を把握する
CHAPTER 5 入出力
- 概要
- 標準出力に書き込む
- 標準エラー出力に書き込む
- 標準入力から読み取る
- 出力の基本
- 出力の基本(書式なし出力)
- 整数を出力する
- 浮動小数点数を出力する
- bool 値をtrue/falseで出力する
- さまざまな書式で出力する
- 日付・時刻を出力する
- 金額書式を出力する
- 入力の基本
- COLUMN 入力ストリームに対するマニピュレータ
- 入力の基本(書式なし入力)
- 入力を読み捨てる
- 1行を読み取る
- 入力の終わり(EOF)を判定する
- 日付・時刻を入力する
- 金額書式を入力する
- 引用符で囲んで文字列を入出力する
- ストリームのエラーを知る
- ストリームでのエラー発生時に例外を送出する
- ロケールを設定する
- COLUMN グローバルロケールとTLS
- ワイド文字入出力を扱う
- COLUMN wchar_tとUnicode
- ファイルを読み書きするストリームを作る
- メモリ上で読み書きする文字列ストリームを作る
- COLUMN 文字列ストリームのユニコード対応
- 読み書きする位置を移動する
- イテレータでストリームへ出力する(書式化あり)
- イテレータでストリームへ出力する(書式化なし)
- ファイルの内容をすべて読み込む
- COLUMN C++03では,括弧を余計につける必要がある点に注意
- 自作の型をostreamで出力できるようにする
- 自作の型をistreamで入力できるようにする
CHAPTER 6 ユーティリティ
- 乱数を生成する
- ポインタを自動的に解放させる(共有方式)
- ポインタを自動的に解放させる(専有方式)
- 型の最大値を取得する
- 複数の値のうち,最も大きい値を取得する
- 複数の値のうち,最も小さい値を取得する
- 複数の値のうち,最も小さい値と最も大きい値を同時に取得する
- 2つの変数を入れ替える
- アサーションを行う
- コンパイル時にアサーションを行う
- 絶対値を求める
- 浮動小数点数の四捨五入を行う
- 浮動小数点数の切り上げを行う
- 浮動小数点数の切り捨てを行う
- 三角関数(正弦/余弦)を扱う
- 平方根を求める
- 数学関数を利用する
- 実行時型情報を扱う
- 関数オブジェクトを変数に持つ
- 時間演算を行う
- 複素数を扱う
- 組を扱う
- タプルを扱う
- システムを終了させる
CHAPTER 7 コンテナとアルゴリズム
- コンテナの概要
- COLUMN std::vector
について
- COLUMN std::vector
- イテレータの概要
- コンテナオブジェクトを構築する
- COLUMN コンテナアダプタで使用するコンテナ型
- コンテナに要素を追加する
- コンテナの要素を参照する
- コンテナの要素数を得る
- コンテナのサイズを変更する
- コンテナを空にする
- コンテナが空かどうか調べる
- コンテナの要素すべてに対して指定した処理を行う
- コンテナを指定した値で埋める
- コンテナの特定要素を置き換える
- コンテナの要素を逆順にする
- シャッフルする
- ソートする
- 指定した要素の数を数える
- 要素を検索する
- コピーする
- コンテナの要素に変更を加えた結果を得る
- コンテナの要素を削除する
- 重複した要素を取り除く
- ソート済みか調べる
- コンテナの要素が条件を満たすか確認する
- コンテナの最大値/最小値を取得する
- コンテナの要素を集計した結果を得る
- 集合演算を行う
- 順列を作成する
- vector/string/arrayをポインタとしてC APIとやりとりさせる
- vector/basic_stringのメモリ使用領域をあらかじめ確保する
- COLUMN std::vector/std::basic_stringへの要素追加
- vector/deque/basic_stringのメモリ使用領域を節約する C++11
- COLUMN コンテナのメモリ確保戦略
- 自分で定義した型を連想コンテナのキーにする
CHAPTER 8 スレッド
- 概要
- スレッドを作成する
- 引数付きでスレッドを作成する
- スレッドの終了を待機する
- スレッドの終了を待機可能か判定する
- スレッドを手放す
- スレッドを識別する
- 現在のスレッドの処理を明け渡す
- 現在のスレッドをスリープする
- 並行実行可能なスレッド数を取得する
- スレッドを排他制御する
- 読み込みが多い状況でスレッドを排他制御する
- リソースのロックを管理する
- 複数のリソースをロックする
- ロックせずに排他アクセスをする
- COLUMN compare_exchange_strong()とcompare_exchange_weak()
- COLUMN アトミック変数は正しく使用することが難しい
- スレッドセーフに一度だけ関数を呼び出す
- 条件変数を使用する
- スレッドをまたいで値や例外を受け渡す
- 非同期処理をする
- スレッドローカル変数を使用する C++11
APPENDIX 付録A ライブラリ
APPENDIX 付録B 言語拡張
- 参考文献・URL