ポケットリファレンスシリーズ[改訂第5版]C++ポケットリファレンス

[表紙][改訂第5版]C++ポケットリファレンス

紙版発売
電子版発売

四六判/592ページ

定価3,520円(本体3,200円+税10%)

ISBN 978-4-297-14165-3

電子版

→学校・法人一括購入ご検討の皆様へ

書籍の概要

この本の概要

C++プログラマー必携の『C++ポケットリファレンス』がリニューアル!

「逆引き形式で目的からすぐ探せる」「サンプルコードを見ながら具体的な実装のイメージがつかめる」という特徴はそのままに,C++23に対応しました。

信頼と安心の1冊です。

こんな方におすすめ

  • C++を使用するプログラマ
  • ゲーム開発者

本書のサンプル

本書の紙面イメージは次のとおりです。画像をクリックすることで拡大して確認することができます。

サンプル画像1

サンプル画像2

サンプル画像3

サンプル画像4

サンプル画像5

目次

  • はじめに
  • 謝辞
  • 本書の構成
  • 本書の使い方

CHAPTER 1 C++とは

  • C++の歴史と特徴
  • 主な処理系

CHAPTER 2 基本文法

  • プログラムの例
  • 識別子
  • 演算子
  • コメント
  • cv修飾子
  • 型の別名宣言
  • 型の自動推論と取得
  • 構造化束縛
  • キャスト
  • 動的な生成と破棄
    • COLUMN new/deleteとメモリリーク
  • サイズとアライメント
    • COLUMN アライメントとは?
  • リテラル
    • COLUMN 生文字リテラルのデリミター
    • COLUMN nullptrの型
  • 右辺値参照とムーブセマンティクス
  • 文(ステートメント)
  • スコープ
  • 関数
  • クラス
  • メンバ変数/メンバ関数/メンバ型
  • 継承
    • COLUMN 仮想関数と非仮想関数の違いと多態性
  • 関数オブジェクト
  • オーバーロード
  • テンプレート
  • 定数式
  • ラムダ式
    • COLUMN ラムダ式の書式の応用
  • コルーチン
  • プリプロセッサ
    • COLUMN 条件付き取り込みで使用される条件式
  • 名前空間
  • 属性

CHAPTER 3 エラーハンドリング

  • エラーハンドリングの概要
  • 例外クラスを使い分ける
  • 例外を送出しないことを明示する
  • システムのエラーを扱う
  • 例外を持ち運ぶ
  • 関数の失敗を無効な値として表す
  • 関数から正常値かエラー値のどちらかを返す
  • アサーションを行う
  • コンパイル時にアサーションを行う
  • システムを終了させる

CHAPTER 4 文字列

  • 概要
  • 文字列オブジェクトを構築する
  • basic_stringリテラルで構築する
  • 文字列オブジェクトの基本操作
  • 文字列の長さを取得する
  • 文字列を空にする
  • 文字列が空かどうかを判定する
  • C言語インタフェースとやりとりする
  • 文字列をイテレータを使用して操作する
  • 文字列の一部を取得する
  • 文字列を数値に変換する
  • 数値を文字列に変換する
  • 文字列を検索する
  • 先頭・終端が特定の文字列であることを判定する
  • 効率的な文字列検索アルゴリズムを使う
  • 正規表現で検索する
  • 正規表現で置換する
  • 低いコストで文字列を受け取る
  • 値を書式指定で文字列化する
  • 自作の型を文字列化できるようにする
  • 区切り文字を指定して文字列を分割する
  • 区切り文字を指定してコンテナを文字列連結する

CHAPTER 5 入出力

  • 概要
  • 標準出力に書き込む
  • 標準エラー出力に書き込む
  • 書式指定で標準出力に書き込む
  • 標準入力から読み取る
  • 出力の基本
  • 入力の基本
  • 1行を読み取る
  • ストリームのエラーを知る
  • 入力の終わり(EOF)を判定する
  • ファイルを読み書きするストリームを作る
  • メモリ上で読み書きする文字列ストリームを作る
  • 読み書きする位置を移動する
  • ファイルの内容をすべて読み込む
  • 自作の型をostreamで出力できるようにする
  • 自作の型をistreamで入力できるようにする
  • パスを扱うオブジェクトを構築する
  • ファイルシステム関数のエラーを扱う
  • ファイルやディレクトリをコピーする
  • ファイルやディレクトリの名前を変更する
  • ファイルやディレクトリを削除する
  • ディレクトリを作成する
  • ディレクトリ内のファイルを列挙する
  • ファイル/ディレクトリが存在するか確認する
  • ファイルサイズを取得する
  • 現在の作業ディレクトリを取得/変更する
  • 相対パスを絶対パスに変換する
  • パスからファイル名を取得する
  • パスから拡張子を取得する
  • パスから拡張子を除いたファイル名を取得する

CHAPTER 6 ユーティリティ

  • 乱数を生成する
  • ポインタを自動的に解放させる(共有方式)
  • ポインタを自動的に解放させる(専有方式)
  • オブジェクトの生死を監視する
  • 型の最大値を取得する
  • 複数の値のうち,最も大きい値を取得する
  • 複数の値のうち,最も小さい値を取得する
  • 値を範囲内に収める
  • 2つの変数を入れ替える
  • 絶対値を求める
  • 浮動小数点数を近い整数に丸める
  • 浮動小数点数の切り上げを行う
  • 浮動小数点数の切り捨てを行う
  • 三角関数(正弦,余弦)を扱う
  • 平方根を求める
  • 累乗を求める
  • 指数関数と対数関数を計算する
  • 実行時型情報を扱う
  • 関数オブジェクトを変数に持つ
  • 時間演算を行う
  • 複素数を扱う
  • ペアを扱う
  • タプルを扱う
  • 継承関係にない複数の型を,1つのオブジェクトに代入する(静的)
  • 継承関係にない複数の型を,1つのオブジェクトに代入する(動的)
  • 2つの数値の間の値を得る
  • ビット演算を行う
  • エンディアンを取得/変換する
  • スタックトレースを取得する

CHAPTER 7 コンテナとアルゴリズム

  • コンテナとアルゴリズムの概要
  • 各コンテナの紹介
    • COLUMN std::vector<bool>について
    • COLUMN コンテナの構築時にクラステンプレートの型推論を利用する
  • イテレータの概要
  • レンジの概要
  • コンテナオブジェクトを構築する
  • コンテナに要素を追加する
  • 挿入イテレータを使用する
  • コンテナの要素を参照する
  • コンテナの要素数を得る
  • コンテナのサイズを変更する
  • コンテナを空にする
  • コンテナが空かどうか調べる
  • コンテナの要素すべてに対して指定した処理を行う
  • コンテナを指定した値で埋める
  • コンテナの特定要素を置き換える
  • コンテナの要素を逆順にする
  • シャッフルする
  • ソートする
  • 指定した要素の数を数える
  • 要素を検索する
  • コンテナの要素に変更を加えた結果を得る
  • コンテナの要素を削除する
  • 重複した要素を取り除く
  • コンテナの要素が条件を満たすか確認する
  • コンテナの最大値/最小値を取得する
  • コンテナの要素を集計した結果を得る
  • 集合演算を行う
  • 順列を作成する
  • コンテナの先頭要素を指すポインタを取得する
  • vector/basic_stringのメモリ使用領域をあらかじめ確保する
    • COLUMN std::vector/std::basic_stringへの要素追加
  • vector/deque/basic_stringのメモリ使用領域を節約する
    • COLUMN コンテナのメモリ確保戦略
  • 連続した数値を出力するビューを得る
  • 配列やコンテナの一部範囲を受け取る
  • 範囲の特定要素を抜き出す
  • 自分で定義した型を連想コンテナのキーにする
  • コンテナを併合する
  • 複数のコンテナを一緒にループさせる
  • 複数のコンテナの組み合わせをループさせる
  • インデックス付きでループ処理を行う

CHAPTER 8 スレッドと非同期

  • 概要
  • スレッドを作成する
  • 引数付きでスレッドを作成する
  • 停止可能なスレッドを作成する
  • スレッドの終了を待機する
  • スレッドの終了を待機可能か判定する
  • スレッドを手放す
  • 現在のスレッドの処理を明け渡す
  • 現在のスレッドをスリープする
  • 並行実行可能なスレッド数を取得する
  • スレッドを排他制御する
  • 読み込みが多い状況でスレッドを排他制御する
  • リソースのロックを管理する
  • 複数のリソースをロックする
  • ロックせずに排他アクセスをする
    • COLUMN compare_exchange_strong()とcompare_exchange_weak()
    • COLUMN アトミック変数は正しく使用することが難しい
  • 条件変数を使用する
  • スレッドをまたいで値や例外を受け渡す
  • 非同期処理をする
  • スレッドローカル変数を使用する
  • 並列アルゴリズムを使用する
  • 非同期に値の列を生成する

APPENDIX 付録A ライブラリ

APPENDIX 付録B 言語拡張

APPENDIX 付録C 開発環境

著者プロフィール

高橋晶(たかはしあきら)

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++を使い始め,プログラミングの楽しさに熱中し,そのままプログラマーとして働き始める。趣味では主に自分用のツールを開発している。

【プロフィールページ】https://www.nyaocat.jp


湯朝剛介(ゆあさこうすけ)

株式会社LabBase所属。プログラマのアルバイトでC++を本格的に始めた。初めはC++がよくわからなかったが,SNS で共著者を含むC++ 界隈の人たちと交流し,その技術に触れるうちに,よりC++らしいコードを書く喜びを知る。Sapporo.cppという札幌のC++コミュニティにも参加し,C++の面白さを広める活動もしていた。最近はRust やTypeScript なども触りつつ,C++ のさらなる進化を楽しみにしている。Microsoft MVP for Visual C++受賞(2015年)。