C++/Book/江添亮のC++入門

C++/Book/江添亮のC++入門

江添亮のC++入門 電子でほしいが紙しか無いようなのでここ参考

とりあえず目次。わかりやすいように番号ふっておく

  • 01 序
  • 02 C++の概要
  • 03 C++の実行
    • 03-01 C++の実行の仕組み
      • 03-02-01 サンプルコード
      • 03-02-02 コンパイル
      • 03-02-03 実行
    • 03-03 GCC: C++コンパイラー
      • 03-03-01 コンパイラーオプション
      • 03-03-02 ヘッダーファイルの省略
      • 03-03-03 コンパイル済みヘッダー(precompiled header)
    • 03-04 Make: ビルドシステム
      • 03-04-01 コンパイルと実行のまとめ
      • 03-04-02 依存関係を解決するビルドシステム
      • 03-04-03 依存関係を記述するルール
      • 03-04-04 コメント
      • 03-04-05 変数
      • 03-04-06 自動変数
        • 03-04-06-01 $@ ターゲット
        • 03-04-06-02 $< 最初の事前要件
        • 03-04-06-03 $^ すべての事前要件
        • 03-04-06-04 自動変数の組み合わせ
      • 03-04-07 PHONYターゲット
    • 03-05 入門用の環境構築
  • 04 C++ヒッチハイクガイド
    • 04-01 最小のコード
    • 04-02 標準出力
    • 04-03 文字列
    • 04-04 整数と浮動小数点数
    • 04-05 変数(variable)
    • 04-06 関数(function)
    • 04-07 本当の関数
  • 05 デバッグ:コンパイルエラーメッセージの読み方
    • 05-01 文法エラー
    • 05-02 意味エラー
    • 05-03 コンパイラーのバグ
  • 06 条件分岐の果てのレストラン
    • 06-01 複合文
    • 06-02 条件分岐
    • 06-03 条件式
      • 06-03-01 条件とは何だろう
      • bool型
      • bool型の演算
      • 論理否定: operator !
      • 同値比較: operator ==, !=
      • 論理積: operator &&
      • 論理和: operator ||
      • 短絡評価
      • boolの変換
      • デバッグ: コンパイル警告メッセージ

最近体重が気になるあなたのための標準入力 これまでのおさらい 標準入力 リダイレクト パイプ プログラムの組み合わせ ループ これまでのおさらい goto文 無限ループ 終了条件付きループ インデックスループ while文 無限ループ 終了条件付きループ インデックスループ for文 do文 break文 continue文 再帰関数 メモリーを無限に確保する これまでのまとめ vector デバッグ:printfデバッグ 実践例 std::cerr まとめ 整数 整数リテラル 10進数リテラル 2進数リテラル 8進数リテラル 16進数リテラル 数値区切り 整数の仕組み 情報の単位 1バイトで表現された整数 符号ビット 1の補数 2の補数 整数型 int型 long int型 long long int型 short int型 char型 整数型のサイズ 整数型の表現できる値の範囲 整数型の変換 浮動小数点数 浮動小数点数リテラル 10進浮動小数点数リテラル 10進数の仮数と指数による表記 16進数の仮数と指数による表記 浮動小数点数の表現と特性 + 0.0 と − 0.0 + ∞ と − ∞ (無限大) NaN(Not a Number) 有効桁数 浮動小数点数同士の変換 浮動小数点数と整数の変換 名前 キーワード 名前に使える文字 宣言と定義 名前空間 グローバル名前空間 名前空間のネスト 名前空間名の別名を宣言する名前空間エイリアス 名前空間名の指定を省略するusingディレクティブ 名前空間を指定しなくてもよいinline名前空間 型名 型名の別名を宣言するエイリアス宣言 スコープ イテレーターの基礎 イテレーターの取得方法 イテレーターの参照する要素に対する読み書き イテレーターの参照する要素を変更 イテレーターの比較 最後の次の要素へのイテレーター なんでもイテレーター イテレーターと添字の範囲 lvalueリファレンスとconst lvalueリファレンス const アルゴリズム for_each all_of/any_of/none_of find/find_if count/count_if equal search copy transform replace fill generate remove ラムダ式 基本 キャプチャー コピーキャプチャー リファレンスキャプチャー クラスの基本 変数をまとめる まとめた変数に関数を提供する より自然に振る舞うクラス より自然な初期化 自然な演算子 演算子のオーバーロード 二項演算子 単項演算子 インクリメント/デクリメント メンバー関数での演算子のオーバーロード std::array プログラマーの三大美徳 配列 ナイーブなarray実装 配列 テンプレート 問題点 関数の引数 関数のテンプレート引数 テンプレート クラステンプレート arrayをさらに実装 ネストされた型名 要素数の取得: size() メンバー関数のconst修飾 先頭と末尾の要素:front/back 全要素に値を代入: fill arrayのイテレーター イテレーターの中身 残りのイテレーターの実装 constなイテレーター: const_iterator 傲慢なエラー処理: 例外 例外を投げる 例外を捕まえる 例外による巻き戻し ポインター 意味上のポインター リファレンスと同じ機能 リファレンスと違う機能 代入 何も参照しない状態 明示的に何も参照しないポインター: nullptr 無効な参照先の作り方 文法上のポインター ポインターとconstの関係 ポインターのポインター 関数へのポインター 配列へのポインター ポインター型の作り方 クラスへのポインター thisポインター メンバーへのポインター ポインターの内部実装 キロバイトとキビバイト メモリーとアドレス ポインターのサイズ ポインターの値 std::bit_castの実装 std::memcpyの実装 void型 void *型 std::byte型 配列のメモリー上での表現 ポインターと整数の演算 いよいよmemcpyの実装 memcpyの別の実装 データメンバーへのポインターの内部実装 イテレーター詳細 イテレーターとポインターの関係 イテレーターカテゴリー ランダムアクセスイテレーター 双方向イテレーター 前方イテレーター 入力イテレーター 出力イテレーター iterator_traits イテレーターカテゴリーの実例 出力イテレーター 入力イテレーター 前方イテレーター 双方向イテレーター ランダムアクセスイテレーター イテレーター操作 advance( i, n ): n移動する distance( first, last ): firstからlastまでの距離 next/prev : 移動したイテレーターを返す リバースイテレーター 動的メモリー確保 概要 malloc/free operator new/operator delete 生のバイト列を基本的な型の値として使う方法 メモリー確保の失敗 クラス型の値の構築 new/delete 配列版new/delete スマートポインター vectorの実装 : 基礎 std::allocator<T>の概要 std::allocator<T>の使い方 std::allocator_traits<Alloc> 簡易vectorの概要 classとアクセス指定 ネストされた型名 簡易vectorのデータメンバー 簡単なメンバー関数の実装 イテレーター 容量確認 要素アクセス operator [] at front/back data vectorの実装 : メモリー確保 メモリー確保と解放の起こるタイミング デフォルトコンストラクター アロケーターを取るコンストラクター 要素数と初期値を取るコンストラクターの実装 ヘルパー関数 ネストされた型名traits allocate/deallocate construct/destroy destroy_until clear デストラクター reserveの実装 resize push_back shrink_to_fit vectorのその他のコンストラクター イテレーターのペア 初期化リスト コピー 普通のコピー コピーコンストラクター コピー代入演算子 コピーの挙動 所有するクラス own<U>からown<T>への変換 もう少し複雑な所有するクラス vectorのコピー コピーコンストラクター コピー代入演算子 ムーブ ムーブの使い方 ムーブの中身 rvalueリファレンス 概要 rvalueリファレンスの宣言 値カテゴリー lvalue prvalue xvalue rvalue glvalue rvalueリファレンスのライブラリ std::move std::moveの実装 フォワーディングリファレンス std::remove_reference_t std::moveの正しい実装 std::forward ムーブの実装 コピーとムーブの判別 ムーブの実装 ムーブコンストラクター ムーブ代入演算子 デフォルトのムーブ コピーの禁止 5原則 スマートポインター unique_ptr shared_ptr 自作の数値クラスで演算をムーブに対応する方法 基本の実装 複合代入演算子 単項演算子 二項演算子 ムーブしない実装 ムーブをしたくなる状況 文字列 はじめに 基本ソース文字セット 基本実行文字セット 文字を表現する方法 ASCII Unicode UTF-16 UTF-32 エンディアンの問題 UTF-8 OS リテラル 通常の文字リテラル ユニバーサルキャラクター名 通常の文字列リテラル ワイド文字 UTF-8/UTF-16/UTF-32 生文字列リテラル 文字列の表現方法 null終端文字列 std::basic_string std::basic_string_view 文字列の操作 null終端文字列の操作 basic_stringの操作 初期化 結合 イテレーター 部分文字列の検索 その他のメンバー関数 文字列の挿入 部分文字列の削除 部分文字列の置換 その他の推奨できない操作 basic_string_viewの操作 乱数 疑似乱数 乱数エンジン 乱数分布 シード 予測不可能な乱数 十分なシード値の量 乱数分布ライブラリ 分布クラス 一様分布(Uniform Distribution) 整数の一様分布(std::uniform_int_distribution<IntType>) 浮動小数点数の一様分布(uniform_real_distribution<RealType>) ベルヌーイ分布(Bernoulli distributions) ベルヌーイ試行 ベルヌーイ分布(std::bernoulli_distribution) 二項分布(std::binomial_distribution<IntType>) 幾何分布(std::geometric_distribution) 負の二項分布(std::negative_binomial_distribution) ポアソン分布 ポアソン分布(poisson_distribution) 指数分布(std::exponential_distribution<RealType>) ガンマ分布(std::gamma_distribution<RealType>) ウェイブル分布(std::weibull_distribution<RealType>) 極値分布(std::extreme_value_distribution<RealType>) 正規分布 正規分布(std::normal_distribution<RealType>) 対数正規分布(std::lognormal_distribution<RealType>) カイ二乗分布(std::chi_squared_distribution<RealType>) コーシー分布(std::cauchy_distribution<RealType>) フィッシャーの F 分布(std::fisher_f_distribution<RealType>) スチューデントの t 分布(std::student_t_distribution<RealType>) サンプリング分布(sampling distributions) 離散分布(std::discrete_distribution<IntType>) 簡単な説明 数学的な説明 変数の宣言 イテレーターのペア 初期化リスト 個数、デルタ、関数 初期化パラメーターの確認 応用例 区分定数分布(std::piecewise_constant_distribution<RealType>) 簡単な説明 数学的な説明 変数の宣言 イテレーターによる指定 初期化リストと関数オブジェクトによる指定 区間数、最小、最大、関数オブジェクトによる指定 内部状態の取得 区分線形分布(std::piecewise_linear_distribution<RealType>) 簡単な説明 数学的な説明 変数の宣言 イテレーターによる指定 初期化リストと関数オブジェクトによる指定 個数、最小値、最大値、関数オブジェクトによる指定 Cプリプロセッサー #includeディレクティブ #define オブジェクト風マクロ 関数風マクロ VA_ARGS(可変長引数マクロ) VA_OPT #演算子 ##演算子 複数行の置換リスト #undefディレクティブ 条件付きソースファイル選択 プリプロセッサーの定数式 #ifディレクティブ #elifディレクティブ #elseディレクティブ #ifdef, #ifndefディレクティブ #lineディレクティブ #errorディレクティブ #pragma Nullディレクティブ 定義済みマクロ名 分割コンパイル ソースファイルとコンパイル 単一のソースファイルのコンパイル ヘッダーファイルはコピペ 複数のソースファイルのコンパイル オブジェクトファイル 複数のソースファイルの書き方 関数 変数 インライン関数/インライン変数 クラス staticメンバー テンプレート デバッガー GDBのチュートリアル プログラムの実行 プログラムの停止方法 ブレイクポイント 行番号へのブレイクポイント ブレイクポイントの確認 ブレイクポイントの削除 ブレイクポイントの有効/無効 関数名へのブレイクポイント 条件付きブレイクポイント プログラムの実行再開とステップ実行 実行再開(continue) ステップ実行(step) ネクスト実行(next) 関数から抜けるまで実行(finish) バックトレース 変数の値を確認 シグナルによるプログラムの中断

cpp/book/ryo_ezoe_cpp_nyumon/start.txt · 最終更新: 2019-09-24 15:50 by ore