ポケットリファレンス
[改訂第4版]C++ポケットリファレンス
- 高橋晶,安藤敏彦,一戸優介,楠田真矢,湯朝剛介 著
- 定価
- 3,278円(本体2,980円+税10%)
- 発売日
- 2021.4.15[在庫なし] 2021.4.12
- 判型
- 四六
- 頁数
- 560ページ
- ISBN
- 978-4-297-11999-7 978-4-297-12000-9
サポート情報
概要
大好評のロングセラー『C++ポケットリファレンス』の改訂第4版。「逆引き形式で目的からすぐ探せる」「サンプルコードを見ながら具体的な実装のイメージがつかめる」という特徴で,困ったときにすぐ役立ちます。C++20に対応し,コンセプト,レンジライブラリ,数学定数,カレンダー機能といった新機能や,拡張されたconstexprの機能などを解説。もちろん,現場で使われているC++03からC++17にも対応しています。信頼と安心の1冊です。
こんな方にオススメ
- C++を使用するプログラマ
- ゲーム開発者
目次
- はじめに
- 謝辞
- 本書の構成
- 本書の使い方
CHAPTER 1 C++とは
- C++の歴史と特徴
- 主な処理系
CHAPTER 2 基本文法
- プログラムの例
- 識別子
- 演算子
- コメント
- 型
- cv修飾子
- 型の別名宣言
- 型の自動推論と取得
- 構造化束縛(C++17)
- キャスト
- 動的な生成と破棄
- COLUMN new/deleteとメモリリーク
- サイズとアライメント
- COLUMN アライメントとは?
- リテラル
- COLUMN 生文字リテラルのデリミター
- COLUMN nullptrの型
- 右辺値参照とムーブセマンティクス(C++11)
- 文(ステートメント)
- スコープ
- 関数
- COLUMN 可変長実引数について
- クラス
- メンバ変数/メンバ関数/メンバ型
- 継承
- COLUMN 仮想関数と非仮想関数の違いと多態性
- 関数オブジェクト
- オーバーロード
- テンプレート
- 定数式(C++11)
- ラムダ式(C++11)
- COLUMN ラムダ式の書式の応用
- プリプロセッサ
- COLUMN 条件付き取り込みで使用される条件式
- 名前空間
- 属性(C++11)
CHAPTER 3 エラーハンドリング
- エラーハンドリングの概要
- 例外クラスを使い分ける
- 例外を送出しないことを明示する(C++11)
- システムのエラーを扱う
- 例外を持ち運ぶ
- 関数の失敗を無効な値として表す
- アサーションを行う
- コンパイル時にアサーションを行う(C++11)
- システムを終了させる
CHAPTER 4 文字列
- 概要
- 文字列オブジェクトを構築する
- basic_stringリテラルで構築する(C++14)
- 文字列オブジェクトの基本操作
- 文字列の長さを取得する
- 文字列を空にする
- 文字列が空かどうかを判定する
- C言語インタフェースとやりとりする
- 文字列をイテレータを使用して操作する
- 文字列の一部を取得する
- 文字列を数値に変換する
- 数値を文字列に変換する
- 文字列を検索する
- 先頭・終端が特定の文字列であることを判定する
- 効率的な文字列検索アルゴリズムを使う
- 正規表現で検索する
- 正規表現で置換する
- 低いコストで文字列を受け取る
- 値を書式指定で文字列化する
CHAPTER 5 入出力
- 概要
- 標準出力に書き込む
- 標準エラー出力に書き込む
- 標準入力から読み取る
- 出力の基本
- 入力の基本
- 1行を読み取る
- ストリームのエラーを知る
- 入力の終わり(EOF)を判定する
- ファイルを読み書きするストリームを作る
- メモリ上で読み書きする文字列ストリームを作る
- COLUMN 文字列ストリームのユニコード対応
- 読み書きする位置を移動する
- ファイルの内容をすべて読み込む
- 自作の型をostreamで出力できるようにする
- 自作の型をistreamで入力できるようにする
- パスを扱うオブジェクトを構築する
- ファイルシステム関数のエラーを扱う
- ファイルやディレクトリをコピーする
- ファイルやディレクトリの名前を変更する
- ファイルやディレクトリを削除する
- ディレクトリを作成する
- ディレクトリ内のファイルを列挙する
- ファイル/ディレクトリが存在するか確認する
- ファイルサイズを取得する
- 現在の作業ディレクトリを取得/変更する
- 相対パスを絶対パスに変換する
- パスからファイル名を取得する
- パスから拡張子を取得する
- パスから拡張子を除いたファイル名を取得する
CHAPTER 6 ユーティリティ
- 乱数を生成する
- ポインタを自動的に解放させる(共有方式)
- ポインタを自動的に解放させる(専有方式)
- オブジェクトの生死を監視する
- 型の最大値を取得する
- 複数の値のうち,最も大きい値を取得する
- 複数の値のうち,最も小さい値を取得する
- 値を範囲内に丸める
- 2つの変数を入れ替える
- 絶対値を求める
- 浮動小数点数を近い整数に丸める
- 浮動小数点数の切り上げを行う
- 浮動小数点数の切り捨てを行う
- 三角関数(正弦/余弦)を扱う
- 平方根を求める
- 累乗を求める
- 指数関数と対数関数を計算する
- 実行時型情報を扱う
- 関数オブジェクトを変数に持つ
- 時間演算を行う
- 複素数を扱う
- ペアを扱う
- タプルを扱う
- 継承関係にない複数の型を,1つのオブジェクトに代入する(静的)
- 継承関係にない複数の型を,1つのオブジェクトに代入する(動的)
- 2つの数値の間の値を得る
- ビット演算を行う
CHAPTER 7 コンテナとアルゴリズム
- コンテナとアルゴリズムの概要
- 各コンテナの紹介
- COLUMN std::vector
について - COLUMN コンテナの構築時にクラステンプレートの型推論を利用する(C++17)
- COLUMN std::vector
- イテレータの概要
- レンジの概要(C++20)
- コンテナオブジェクトを構築する
- COLUMN コンテナアダプタで使用するコンテナ型
- コンテナに要素を追加する
- 挿入イテレータを使用する
- コンテナの要素を参照する
- コンテナの要素数を得る
- コンテナのサイズを変更する
- コンテナを空にする
- コンテナが空かどうか調べる
- コンテナの要素すべてに対して指定した処理を行う
- コンテナを指定した値で埋める
- コンテナの特定要素を置き換える
- コンテナの要素を逆順にする
- シャッフルする
- ソートする
- 指定した要素の数を数える
- 要素を検索する
- コンテナの要素に変更を加えた結果を得る
- コンテナの要素を削除する
- 重複した要素を取り除く
- コンテナの要素が条件を満たすか確認する
- コンテナの最大値/最小値を取得する
- コンテナの要素を集計した結果を得る
- 集合演算を行う
- 順列を作成する
- コンテナの先頭要素を指すポインタを取得する
- 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)
- 並列アルゴリズムを使用する(C++17)
APPENDIX 付録A ライブラリ
APPENDIX 付録B 言語拡張
APPENDIX 付録C 開発環境
- 参考文献・URL
- 索引
プロフィール
高橋晶
Preferred Networks所属。Boost C++ Librariesコントリビュータ。
「新しい技術を,より多くのプロジェクトに積極的に取り入れてほしい」という願いから,C++とBoostに関する日本語情報を普及させるために,主にブログやコミュニティWebサイト(boostjp/cpprefjp)で活動している。C++ MIXというオフライン勉強会も主催している。
著書:『C++ テンプレートテクニック』(SB クリエイティブ),『プログラミングの魔導書 Vol.1 & 3』(ロングゲート)
プロフィールページ:https://faithandbrave.github.io/
安藤敏彦
フリープログラマ。
初めてのC++との出会いは(たぶん)Borland C++。
プログラミングのコミュニティやインターネット上で知り合ったC++のエキスパートたちに刺激を受け,それ以前よりC++への興味がさらに増した。
その縁もあってこれまでに『C++ テンプレートテクニック』『ストラウストラップのプログラミング入門』のレビュワーとして,C++に関する書籍と関わってきた。
長く組込系でCやC++を使用していたが,紆余曲折を経て現在はPHPerになった。
現在でも,気になることがあるとWandboxなどで短いC++コードを書いている。
一戸優介
株式会社オプティム所属。
Microsoft MVP for Visual C++受賞(2015年)。
学生の頃にWindowsアプリケーション作成のためActiveBasicに次いでC++を学び,その甲斐あってか,現職でも主にC++でアプリケーションを作成する役を任される。
プライベートでもC++を使い,ブログや勉強会などで情報を発信し,少しでもC++の情報が充実すればと微力ながら努力している。
C++を始めたきっかけは「猫でもわかる……」のWeb サイトでC言語編の次にC++編が並んでいたことから。
著書:『プログラミングの魔導書 Vol.1』(ロングゲート)
プロフィールページ:https://dev.activebasic.com/egtra2nd/about.html
楠田真矢
会社員,プログラマー。
主な業務はC++を用いてのネットワークシステムに関するサーバーソフトウェア開発,およびScala/Typescriptを用いてのWebアプリケーション開発。
学生の頃にゲーム開発を目的としてプログラミングを始めたが,触れるうちにプログラミング自体の楽しさに気付く。
プロフィールページ:http://nyaocat.jp
湯朝剛介
プログラマのアルバイトでC++を本格的に始めた。
初めはC++がよくわからなかったが,共著者やTwitter のC++界隈の人と交流し,その技術に触れるうちに,よりC++らしいコードを書く喜びを知る。
Sapporo.cppという札幌のC++コミュニティにも参加し,C++の面白さを広める活動もしていた。
最近はほかのプログラミング言語も触りつつ,C++のさらなる進化を楽しみにしている。
Microsoft MVP for Visual C++受賞(2015年)。