C++標準ライブラリの使い方 完全ガイド

[表紙]C++標準ライブラリの使い方 完全ガイド

B5変形判/512ページ/CD1枚

定価(本体3,480円+税)

ISBN 4-7741-2401-X

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

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

書籍の概要

この本の概要

C++でプログラムを作成するにあたって大事なことに,まず「標準ライブラリの理解と活用」があります。これを抜きにして実用的なプログラムを作成することはできません。 本書は,標準ライブラとそのしくみの理解から始まって,テンプレート,反復子,コンテナ,関数オブジェクト,アダプタ,入出力ストリームなどに分けて解説を行った後,標準アルゴリズムを分類の上,リファレンス的に使えるようまとめられています。アルゴリズムの使い方に関するリファレンス部分が類書にはないほど充実しており,ここにも大きな価値があります。

こんな方におすすめ

  • C++の入門を終えた方
  • 開発現場でC++プログラミングをしている方
  • プログラムを作成する学生の方

目次

Chapter1 C++標準ライブラリとその仕組み

  • 1-1 C++標準ライブラリの構成
    • 1-1-1 STLコンポーネントとは?
    • 1-1-2 STLコンポーネントの仕組み
  • 1-2 コンテナとは?
  • 1-3 反復子とは?
  • 1-4 標準アルゴリズムとは?
  • 1-5 関数オブジェクトとは?
  • 1-6 アダプタとは?
  • 1-7 C++ライブラリの例外
  • まとめ

Chapter2 C++テンプレートとその使い方

  • 2-1 テンプレートと型の汎用化
    • 2-1-1 テンプレート型を定義するには?
    • 2-1-2 テンプレート型を使うには?
    • 2-1-3 テンプレート型の明示的な特定とは?
  • 2-2 C++ライブラリのテンプレートとその使い方
    • 2-2-1 typedefによる型の特定とは?
    • 2-2-2 コンテナのテンプレート型
    • 2-2-3 標準アルゴリズムのテンプレート型
    • 2-2-4 反復子のテンプレート型
    • 2-2-5 関数オブジェクトのテンプレート型
  • 2-3 C++ライブラリを使ってみる
    • 2-3-1 配列要素に標準アルゴリズムを適用してみたい
    • 2-3-2 vectorコンテナを使ってみたい
    • 2-3-3 コンテナ要素を標準出力したい
  • まとめ

Chapter3 反復子とその使い方

  • 3-1 反復子特性と反復子要件とは?
    • 3-1-1 コンテナが提供する反復子
    • 3-1-2 標準アルゴリズムが要求する反復子要件
    • 3-1-3 反復子の特性と要件を満たすことの意味
    • 3-1-4 コンテナにアルゴリズムを適用する場合の制約
  • 3-2 反復子がサポートする演算種類とは?
    • 3-2-1 入力反復子(InputIterator)
    • 3-2-2 出力反復子(OutputIterator)
    • 3-2-3 前方反復子(ForwardIterator)
    • 3-2-4 双方向反復子(BidirectionalIterator)
    • 3-2-5 ランダムアクセス反復子(RandomAccessIterator)
  • 3-3 反復子演算を試してみる
    • 3-3-1 反復子のインスタンス変数を宣言するには?
    • 3-3-2 vectorコンテナの反復子演算を試してみる
    • 3-3-3 listコンテナの反復子演算を試してみる
  • 3-4 反復子取り扱いの基本事項
    • 3-4-1 間接参照できない反復子
    • 3-4-2 反復子範囲の「半開き表記」とは?
    • 3-4-3 無効な反復子とは?
  • 3-5 その他の反復子
  • まとめ

Chapter4 コンテナの種類とその使い方

  • 4-1 コンテナの基本構造
    • 4-1-1 allocatorクラスとは
    • 4-1-2 反復子クラスとは?
    • 4-1-3 コンテナの種類
    • 4-1-4 すべてのコンテナに共通のメンバーと非メンバー関数
  • 4-2 vectorコンテナ(動的な配列)
    • 4-2-1 vectorコンテナに固有のメンバー
    • 4-2-2 vectorコンテナを使うには?
  • 4-3 listコンテナ(双方向リンクリスト)
    • 4-3-1 listコンテナに固有のメンバー
    • 4-3-2 listコンテナを使うには?
  • 4-4 dequeコンテナ(両端アクセスできる動的な配列)
    • 4-4-1 dequeコンテナに固有のメンバー
    • 4-4-2 dequeコンテナを使うには?
  • 4-5 stringコンテナ(文字列操作できる動的な配列)
    • 4-5-1 stringコンテナに固有のメンバー
    • 4-5-2 stringコンテナを使うには?
  • 4-6 mapとmultimapコンテナ
    • 4-6-1 mapコンテナに固有のメンバー
    • 4-6-2 mapコンテナを使うには?
    • 4-6-3 multimapコンテナに固有のメンバー
    • 4-6-4 multimapコンテナを使うには?
  • 4-7 setとmultisetコンテナ
    • 4-7-1 setコンテナに固有のメンバー
    • 4-7-2 setコンテナを使うには?
    • 4-7-3 multisetコンテナに固有のメンバー
    • 4-7-4 multisetコンテナを使うには?
  • まとめ

Chapter5 関数オブジェクト/アダプタとその使い方

  • 5-1 叙述とは?
  • 5-2 関数オブジェクトとその仕組み
    • 5-2-1 関数オブジェクトを定義するには?
    • 5-2-2 関数オブジェクト定義の雛形
    • 5-2-3 単項関数オブジェクト定義の雛形を使ってみる
    • 5-2-4 二項関数オブジェクト定義の雛形を使ってみる
    • 5-2-5 関数オブジェクトの明示的な特定バージョンを定義する
  • 5-3 関数オブジェクト定義の事例
  • 5-4 関数オブジェクトの種類と表記
    • 5-4-1 関数オブジェクトの種類と表記による区別
    • 5-4-2 C++ライブラリの定義済み関数オブジェクト
    • 5-4-3 バインダとは?(bind1st()とbind2nd()ヘルパ関数)
    •  バインダ用途のヘルパ関数 <functional>
  • 5-5 アダプタとその使い方
    • 5-5-1 アダプタの種類とヘルパ関数
    • 5-5-2 not1()とnot2()ヘルパ関数
    •  not1()とnot2()ヘルパ関数 <functional>
    • 5-5-3 ptr_fun()ヘルパ関数
    •  1つの引数をとるptr_fun()と2つの引数をとるptr_fun()ヘルパ関数 <functional>
    • 5-5-4 back_inserter(),front_inserter(),inserter()ヘルパ関数
    •  back_inserter(),front_inserter(),inserter()ヘルパ関数 <iterator>
    • 5-5-5 reverse_iterator
    •  reverse_iterator反復子アダプタ <iterator>
    • 5-5-6 queueとpriority_queueとstack
    •  queueとpriority_queueコンテナアダプタ <queue>
    •  stackコンテナアダプタ <stack>
    • 5-5-7 mem_fun()とmem_fun_ref()ヘルパ関数
    •  mem_fun()ヘルパ関数(ポインタバージョン) <functional>
    •  mem_fun_ref()ヘルパ関数(参照バージョン) <functional>
  • まとめ

Chapter6 入出力ストリームとその使い方

  • 6-1 C++の入出力ストリーム
    • 6-1-1 ios基本クラス
    • 6-1-2 ios基本クラスの定義済み定数
  • 6-2 標準入出力ストリームクラス
    • 6-2-1 入出力演算子と入出力マニピュレータ
    • 6-2-2 データ入出力のための基本的なメンバー関数
  • 6-3 ファイル入出力ストリームクラス
    • 6-3-1 ファイル入出力プログラムの雛形
    • 6-3-2 自動整形入出力と整形なし入出力の違い
  • 6-4 文字列入出力ストリームクラス
    • 6-4-1 文字列入出力ストリームクラスの使い方
    • 6-4-2 文字列入出力ストリームクラスを使ってみる
  • 6-5 ストリーム入出力反復子
    • 6-5-1 ストリーム入出力反復子のコンストラクタ
    • 6-5-2 ストリーム入出力反復子を使うには?
  • 6-6 ストリームバッファ反復子
    • 6-6-1 ストリームバッファ入出力反復子のコンストラクタ
    • 6-6-2 ストリームバッファ入出力反復子を使うには?
    • 6-6-3 ストリームバッファ反復子を使ったアプリケーション
  • まとめ

Chapter7 標準アルゴリズムとその使い方1

  • ―基本アルゴリズム
  • 標準アルゴリズムの基本的な使い方
  • 汎用ループアルゴリズム
    • for_each()アルゴリズム <algorithm>―よく使うアルゴリズム
  • 汎用の変換アルゴリズム
    • transform()アルゴリズム <algorithm>―よく使うアルゴリズム
  • 初期設定アルゴリズム
    • fill()アルゴリズム <algorithm>
    • fill_n()アルゴリズム <algorithm>
    • generate()アルゴリズム <algorithm>
    • generate_n()アルゴリズム <algorithm>
    • random_shuffle()アルゴリズム <algorithm>
  • 要素間の計算を行うアルゴリズム
    • count()アルゴリズム <algorithm>
    • count_if()アルゴリズム <algorithm>
    • accumulate()アルゴリズム <numeric>
    • adjacent_difference()アルゴリズム <numeric>
    • partial_sum()アルゴリズム <numeric>
    • inner_product()アルゴリズム <numeric>
  • 要素の大小関係を調べるアルゴリズム
    • min()アルゴリズム <algorithm>
    • max()アルゴリズム <algorithm>
    • min_element()アルゴリズム <algorithm>
    • max_element()アルゴリズム <algorithm>
    • equal()アルゴリズム <algorithm>
    • mismatch()アルゴリズム <algorithm>
    • lexicographical_compare()アルゴリズム <algorithm>

Chapter8 標準アルゴリズムとその使い方2

  • ―入れ替え,コピー,再配置,ソート
  • 要素入れ替えアルゴリズム
    • swap()アルゴリズム <algorithm>
    • swap_ranges()アルゴリズム <algorithm>
    • iter_swap()アルゴリズム <algorithm>
  • コピーアルゴリズム
    • copy()アルゴリズム <algorithm>―よく使うアルゴリズム
    • copy_backward()アルゴリズム <algorithm>
  • 再配置アルゴリズム
    • partition()アルゴリズム <algorithm>
    • stable_partition()アルゴリズム <algorithm>
    • nth_element()アルゴリズム <algorithm>
    • reverse()アルゴリズム <algorithm>
    • reverse_copy()アルゴリズム <algorithm>
    • rotate()アルゴリズム <algorithm>
    • rotate_copy()アルゴリズム <algorithm>
    • next_permutation()アルゴリズム <algorithm>
    • prev_permutation()アルゴリズム <algorithm>
  • ソートアルゴリズム
    • sort()アルゴリズム <algorithm>―よく使うアルゴリズム
    • stable_sort()アルゴリズム <algorithm>―よく使うアルゴリズム
    • partial_sort()アルゴリズム <algorithm>
    • partial_sort_copy()アルゴリズム <algorithm>

Chapter9 標準アルゴリズムとその使い方3

  • ―マージ,置換,除去,探索
  • マージアルゴリズム
    • merge()アルゴリズム <algorithm>
    • inplace_merge()アルゴリズム <algorithm>
  • 置換アルゴリズム
    • replace()アルゴリズム <algorithm>
    • replace_if()アルゴリズム <algorithm>
    • replace_copy()アルゴリズム <algorithm>
    • replace_copy_if()アルゴリズム <algorithm>
  • 除去アルゴリズム
    • remove()アルゴリズム <algorithm>
    • remove_if()アルゴリズム <algorithm>
    • remove_copy()アルゴリズム <algorithm>
    • remove_copy_if()アルゴリズム <algorithm>
    • unique()アルゴリズム <algorithm>
    • unique_copy()アルゴリズム <algorithm>
  • 探索アルゴリズム
    • find()アルゴリズム <algorithm>
    • find_if()アルゴリズム <algorithm>
    • find_first_of()アルゴリズム <algorithm>
    • adjacent_find()アルゴリズム <algorithm>
    • search_n()アルゴリズム <algorithm>
    • search()アルゴリズム <algorithm>
    • find_end()アルゴリズム <algorithm>
  • 二分探索アルゴリズム
    • binary_search()アルゴリズム <algorithm>
    • lower_bound()アルゴリズム <algorithm>
    • upper_bound()アルゴリズム <algorithm>
    • equal_range()アルゴリズム <algorithm>

Chapter10 標準アルゴリズムとその使い方4

  • ―集合,ヒープ,低レベルメモリ操作
  • 集合アルゴリズム
    • includes()アルゴリズム <algorithm>
    • set_difference()アルゴリズム <algorithm>
    • set_intersection()アルゴリズム <algorithm>
    • set_symmetric_difference()アルゴリズム <algorithm>
    • set_union()アルゴリズム <algorithm>
  • ヒープ操作アルゴリズム
    • make_heap()アルゴリズム <algorithm>
    • push_heap()アルゴリズム <algorithm>
    • pop_heap()アルゴリズム <algorithm>
    • sort_heap()アルゴリズム <algorithm>
  • 低レベルメモリ操作アルゴリズム
    • get_temporary_buffer()アルゴリズム <memory>
    • return_temporary_buffer()アルゴリズム <memory>
    • uninitialized_fill()アルゴリズム <memory>
    • uninitialized_fill_n()アルゴリズム <memory>
    • uninitialized_copy()アルゴリズム <memory>

付属CD-ROMについて