ポケットリファレンスシリーズC++ポケットリファレンス

[表紙]C++ポケットリファレンス

四六判/528ページ

定価(本体2,880円+税)

ISBN 978-4-7741-5715-3

ただいま弊社在庫はございません。

本書の新版が発行されています。

電子版

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

書籍の概要

この本の概要

ロングセラーシリーズ・ポケットリファレンスにC++が新登場。

「逆引き形式で目的からすぐ探せる」
「サンプルコードを見ながら具体的な実装のイメージがつかめる」

という特徴で,困ったときにすぐに役立ちます。

最新のC++11と現場のスタンダードであるC++03に対応。C++のエキスパートたちが執筆した,現場で役立つ1冊です。

こんな方におすすめ

  • C++プログラマ
  • C++11の特徴を手っ取り早く知って,使ってみたい方

著者の一言

世の中にはC++の解説書が多く出ていますが,それらの多くは下位互換性の考慮,一般的に難しいと言われるC++の文法の解説に多くの項を割いているため,プログラムをよりかんたんに記述でき,強力な機能を備えているC++の標準ライブラリを説明している本は意外に少ない印象があります。

そこで,本書ではC++の標準ライブラリの使い方を中心に,「何がしたいか」から「どうやって」を調べる逆引きリファレンスの形式をとっています。

一般にC++は難しいという印象が強いです。しかし,2011年にISO/IEC 14882:2011として策定された,C++11と呼ばれるバージョンでは,難しいといわれる多くの部分をかんたんに実現する方法が用意されました。また,多くのユーザーに使われている主要コンパイラも,続々とこのC++11に対応してきています。

これらの現状をふまえ,また,これからC++を使い始める方には古くて難しい機能より,新しくてかんたんな方法をより広く知って欲しいという思いから,本書ではC++の最新規格であるC++11を中心に解説しています。もちろん,古くからC++を使っており,今までの知識を一新させたい方にも,本書のC++11対応したライブラリの解説とサンプルは役立つと思います。

現在,C++11対応の本はほとんど出ていません。日本語のものとなれば皆無でしょう。このタイミングでC++11の本を出すことが,日本のC++プログラマにC++11を知ってもらうきっかけになることを期待しています。

微力ながら,本書が新たなC++利用者の裾野を広げ,また,現在C++で開発をされている開発者の助けとなれば,著者一同望外の喜びです。

目次

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

第1章 C++とは

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

第2章 基本文法

  • プログラムの例
  • 識別子と文字セット
  • コメント
  • コラム オブジェクトのアドレスを取得するには
  • cv修飾子
  • コラム const修飾とvolatile修飾の混在
  • 型の別名宣言
  • コラム 複雑な関数ポインタの別名宣言とstd::function
  • コラム 関数型の別名宣言
  • 型の自動推論と取得
  • キャスト
  • 動的な生成と破棄
  • コラム new/deleteとメモリーリーク
  • サイズとアラインメント
  • コラム アラインメントとは?
  • リテラル
  • コラム 生文字リテラルのデリミター
  • コラム nullptrの型
  • コラム ユーザー定義リテラルをコンパイル時定数にする
  • 右辺値参照とムーブセマンティクス
  • 文(ステートメント)
  • スコープ
  • 関数
  • クラス
  • メンバ変数・メンバ関数・メンバ型
  • 継承
  • テンプレート
  • 定数式
  • ラムダ式
  • プリプロセッサ
  • コラム definedと論理否定
  • 名前空間
  • 属性

第3章 例外処理

  • 概要
  • 例外クラスを使い分ける
  • 空の例外ポインタを作成する
  • 現在送出されている例外オブジェクトを指し示す例外ポインタを取得する
  • 例外ポインタが指し示している例外オブジェクトを再送出する
  • 例外オブジェクトの例外ポインタを取得する
  • 入れ子例外を作成する
  • 入れ子の例外ポインタを取得する
  • 入れ子の例外オブジェクトを再送出する
  • 入れ子例外を送出する

第4章 文字列

  • 概要
  • 文字列オブジェクトを構築する
  • 文字列オブジェクトの基本操作
  • 文字列の長さを取得する
  • 文字列を空にする
  • 文字列が空かどうかを判定する
  • C言語インタフェースとやりとりする
  • 文字列をイテレータを使用して操作する
  • 文字列の一部を取得する
  • 文字列を数値に変換する
  • 数値を文字列に変換する
  • 文字列を検索する
  • 指定した位置の文字列を置換する
  • 正規表現で検索する
  • 正規表現で置換する
  • 正規表現の構文を切り替える
  • よく使う文字列アルゴリズムの実装と使い方を把握する

第5章 入出力

  • 概要
  • 標準出力に書き込む
  • 標準エラー出力に書き込む
  • 標準入力から読み取る
  • C言語のstdioとの同期を外す
  • 出力の基本
  • 出力の基本(書式なし出力)
  • 整数を出力する
  • 浮動小数点数を出力する
  • bool値をtrue/falseで出力する
  • さまざまな書式で出力する
  • 日付・時刻を出力する
  • 金額書式を出力する
  • 入力の基本
  • コラム 入力ストリームに対するマニピュレータ
  • 入力の基本(書式なし入力)
  • 入力を読み捨てる
  • 1行を読み取る
  • 入力の終わり(EOF)を判定する
  • 日付・時刻を入力する
  • 金額書式を入力する
  • ストリームのエラーを知る
  • ストリームでのエラー発生時に例外を送出する
  • ロケールを設定する
  • コラム グローバルロケールとTLS
  • ワイド文字入出力を扱う
  • コラム wchar_tとUnicode
  • ファイルを読み書きするストリームを作る
  • メモリ上で読み書きする文字列ストリームを作る
  • コラム 文字列ストリームのユニコード対応
  • 読み書きする位置を移動する
  • イテレータでストリームへ出力する(書式化あり)
  • イテレータでストリームへ出力する(書式化なし)
  • イテレータでストリームから入力する(書式化あり)
  • コラム C++03では括弧を余計につける必要がある点に注意
  • イテレータでストリームから入力する(書式化なし)
  • 自作の型をostreamで出力できるようにする
  • 自作の型をistreamで入力できるようにする
  • C言語の入出力処理に対応するC++の機能を使う

第6章 ユーティリティ

  • 乱数を生成する
  • ポインタを自動的に解放させる(共有形式)
  • ポインタを自動的に解放させる(専有形式)
  • コラム ヘルパ関数
  • 型の最大値を取得する
  • 複数の値のうち,最も大きい値を取得する
  • 複数の値のうち,最も小さい値を取得する
  • 複数の値のうち,最も小さい値と最も大きい値を同時に取得する
  • 2つの変数を入れ替える
  • アサーションを行う
  • コンパイル時にアサーションを行う
  • 絶対値を求める
  • 浮動小数点数の四捨五入を行う
  • 浮動小数点数の切り上げを行う
  • 浮動小数点数の切り捨てを行う
  • 三角関数(正弦/余弦)を扱う
  • 平方根を求める
  • 数学関数を利用する
  • 実行時型情報を扱う
  • 関数オブジェクトを変数に持つ
  • 時間演算を行う
  • 複素数を扱う
  • 組を扱う
  • タプルを扱う
  • システムを終了させる

第7章 コンテナとアルコリズム

  • コンテナの概要
  • コラム std::vectorについて
  • イテレータの概要
  • コンテナオブジェクトを構築する
  • コンテナに要素を追加する
  • コンテナの要素を参照する
  • コンテナの要素数を得る
  • コンテナのサイズを変更する
  • コンテナを空にする
  • コンテナが空かどうか調べる
  • コンテナの要素すべてに対して指定した処理を行う
  • コンテナを指定した値で埋める
  • コンテナの特定要素を置き換える
  • コンテナの要素を逆順にする
  • シャッフルする
  • ソートする
  • 指定した要素の数を数える
  • 要素を検索する
  • コピーする
  • コンテナの要素に変更を加えた結果を得る
  • コンテナの要素を削除する
  • 重複した要素を取り除く
  • ソート済みか調べる
  • コンテナの要素が条件を満たすか確認する
  • コンテナの最大値/最小値を取得する
  • コンテナの要素を集計した結果を得る
  • 集合演算を行う
  • 順列を作成する
  • vector/string/arrayをポインタとしてC APIとやりとりさせる
  • vector/basic_stringのメモリ使用領域をあらかじめ確保する
  • コラム std::vector/std::basic_stringへの要素追加
  • vector/deque/basic_stringのメモリ使用領域を節約する
  • コラム コンテナのメモリ確保戦略
  • 自分で定義した型を連想コンテナのキーにする

第8章 スレッド

  • 概要
  • スレッドを作成する
  • スレッドの終了を待機する
  • スレッドを手放す
  • スレッドを識別する
  • 現在のスレッドの処理を明け渡す
  • 現在のスレッドをスリープする
  • 並行実行できるスレッド数を取得する
  • スレッドを排他制御する
  • リソースのロックを管理する
  • 複数のリソースをロックする
  • ロックせずに排他アクセスをする
  • コラム compare_exchange_strong()とcompare_exchange_weak()
  • コラム アトミック変数は正しく使用することが難しい
  • スレッドセーフに1度だけ関数を呼び出す
  • 条件変数を使用する
  • スレッドをまたいで値や例外を受け渡す
  • 非同期処理をする
  • スレッドローカル変数を使用する

付録

  • A ライブラリ
  • B 言語拡張
  • 参考文献・URL

著者プロフィール

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

株式会社ロングゲート所属。Boost C++ Librariesコントリビュータ。C++標準化委員会エキスパートメンバ。
「新しい技術を,より多くのプロジェクトに積極的に取り入れてほしい」という願いから,C++とBoostに関する日本語情報普及のために,おもにブログや集合知サイト(boostjp/cpprefjp)で活動している。Boost.勉強会というオフライン勉強会も主催している。
最近は,日本で生み出された技術を,英語圏にフィードバックしていくために,英会話教室に通っている。
【著書】『C++テンプレートテクニック』(ソフトバンククリエイティブ),『プログラミングの魔導書 Vol.1』(ロングゲート)
【プロフィールページ】https://sites.google.com/site/faithandbrave/about


安藤敏彦(あんどうとしひこ)

フリープログラマ。
初めてのC++との出会いは(たぶん)Borland C++。
主に組み込み系ソフトウェア開発でC++やC言語を使用した開発に携わってきた。
インターネット上で知り合ったC++のエキスパートたちに刺激を受け,それ以前よりC++への興味がさらに増し,今までに『C++テンプレートテクニック』『ストラウストラップのプログラミング入門』の査読メンバーとして,C++に関する書籍と関わってきた。今回が初めてのC++本の執筆機会となる。


一戸優介(いちのへゆうすけ)

株式会社オプティム所属。
学生の頃にWindowsアプリケーション作成のためActiveBasicに次いでC++を学び,その甲斐あってか,現職でもたびたびC++でアプリケーションを作成する役を任される。
「自分だけが知っていても意味がない」という考えから,プライベートでもBoost.勉強会などにおいてたびたび発表するなど,C++の隠れた特徴を知らしめるべく努力している。
C++を始めたきっかけは「猫でもわかる……」のウェブサイトでC言語編の次にC++編が並んでいたことから。
【著書】『プログラミングの魔導書 Vol.1』(ロングゲート)
【プロフィールページ】http://dev.activebasic.com/egtra2nd/about.html


楠田真矢(くすだまさや)

東京工科大学コンピュータサイエンス学部4年生。株式会社Aimingアルバイト。
高校三年の冬からWindows向けゲームを製作するためにC++を学び始める。
当初はプログラミング自体に興味はなくゲームを開発するための道具と考えていたが,TwitterでBoost C++ Librariesを知り,触れるうちにプログラミング自体の楽しさに目覚める。
色々な技術に触れるべく,IT系の勉強会に参加/発表をしている。
専ら普段の趣味はTwitter。
【プロフィールページ】http://nyaocat.jp


道化師(どうけし)

C++標準化委員会エキスパートメンバ。
小学生からプログラミングをやり始め,Windows3.1用のソフトウェア開発よりC++に携わり,以後さまざまな環境におけるC++での開発を経験。
プライベートでも,C++で開発したアプリケーションやライブラリを公開。
C++コミュニティでも十数年活動を続け,近年はオフラインのイベントでのさまざまな発表も行っている。


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

Sapporo.cpp主催。
プログラマのアルバイトでC++を本格的に始めた。
初めはC++がよくわからなかったが,高橋晶さんのブログを読んだり,TwitterのC++界隈の人たちと交流するうちに,よりC++らしいコードを書く喜びを知る。
Sapporo.cppという札幌のC++コミュニティでC++の面白さを広める活動をしている。
趣味はDTMとDJ。最近はほかのプログラミング言語と英語を勉強したいと思っている。