chap 1 C++汎用技術基礎--テンプレート#STL
4934 ワード
0縁起プログラミングの経験と蓄積が少しあって、系統的な学習の下でSTLを考えて、以前はすべて勝手にしたノートで、今テーマの出力を考えています. 本の原型はISBN:9787302421757 『C++汎用STL原理と応用』で、図書館から借りた国内の大学教材で、まずこれを読み終えて、できれば該当する章でplusバージョンをもう一つ書きます.
1コンテンツ
1.1汎用およびテンプレート
1.1.1汎用の概念汎用(generic type):汎用タイプです.
1.1.2 C++テンプレートとその定義テンプレート:タイププレースホルダを宣言する必要がある場合を除き、他の内容はターゲットエンティティコードと完全に同じである必要があります.テンプレートを宣言する場合は、エンティティコードの前に説明文を追加します.前はtemplateキーワードです. 関数テンプレート
クラステンプレート 宣言文に を付ける
1.1.3いくつかの説明とまとめ はサポートされていない. C++11と14では、キーワードautoに新しい意味を追加し、decltype式を追加します. autoキーワードは、データ型を自動的に導出ための である.以前はautoはシステムの内蔵データにのみ有効だったが、コンパイラのタイプ記憶能力を利用して、カスタムタイプを覚えることができるようになった. 変数タイプの特定が困難な問題は主に関数の戻り値に現れるため、関数の戻り値タイプの位置にはautoキーワードがしばしば現れる、auto戻り値占有 と呼ばれる.
autoをデータ型と見なすと、autoは実は汎用型とも言えるが、キーワードtypename宣言は必要ない. C++の新しい標準は変数テンプレートの概念を導入した. 1.2テンプレートパラメータについて
1.2.1テンプレートパラメータの種類タイプパラメータ クラステンプレートを関数とする実例 .
非タイプパラメータ
テンプレート定義型パラメータ C++はクラステンプレートの定義をクラステンプレートパラメータとしても許可する が必要とする目的:このパラメータの実パラメータがクラステンプレートである必要があることを強調するほか、このクラステンプレートが持つパラメータの個数も強調する.
1.2.2テンプレートパラメータと実パラメータの結合関数テンプレートの実パラメータの暗黙的な提供 になる.
ポインタ実パラメータ C++では、ポインタはデータ型と見なされる. 具体的なコードを参照してください.【作者は説明していないが、私はまだこの部分をよく知らない】 修飾字constと&の使用 具体的なコード例を参照してください.【具体的なアプリケーションシーンを見たことがない】
1.3特化テンプレートとテンプレートの具現規則
1.3.1特化(特列化)テンプレート特化(特列化)テンプレート:特殊なアルゴリズムの要求があるデータ型のためにテンプレートを別途作成する 共通テンプレート:入場券10元 特化テンプレート:学生と老人半額 関数テンプレートの特化テンプレート エンティティコードの前に、次の宣言 を追加します.
類テンプレートの特化と偏特化 偏特化:パラメータの1つまたは複数の のみを特化する偏特化テンプレートの書き方 フル特化テンプレートの書き方
1.3.2テンプレートの具現以上の汎用モジュールの共存があるため、コンパイラは生成エンティティモジュールコードを選択する必要があり、ルールがあります. 具体的な優先順位 特化テンプレート(関数またはクラス) 偏特化テンプレート(関数またはクラス) 一般テンプレート(関数またはクラス) システム
1.4右参照とテンプレート遷移の意味はC 11が発表した新しい概念と新しい技術である.
1.4.1右値参照右:代入演算子の右側にのみ表示されます.データのみを表すことができます.匿名、固定アドレスのないオブジェクト. 左:代入演算子の左側にも代入演算子の右側にも表示されます.名前付き、固定アドレス付き式 右参照 C 11の前に2つの表現がある がある. C 11以降は1つのみ定義: 強の動作右値に変数名を付け、右値のライフサイクルを延長することを目的とします. 右値の非常量参照
1.4.2右参照の適用1-転送の意味深いコピー 浅いコピー 1.4.3右値参照の適用2-転送関数move()右値参照がメリットがある後、左値も利用したい、moveの原型 1.4.4右参照の適用3-パラメータ完全転送テンプレート()パラメータ転送 1完璧な転送問題の提出と解決構想 2テンプレートパラメータタイプ導出規則--参照子折り畳み規則 3パラメータタイプが正しく転送される保証--forward()関数テンプレート C++11は
この章のコード
その他の教材に該当する章 『C++STL開発技術ガイド』 chap 2 C++テンプレート技術P 39/454 コンテンツ 2.4関数テンプレートリロードP 44コンパイラ呼び出し規則 2.5クラステンプレート継承P 44 コードはその時になってから一緒に提出します.
問題 テンプレートとマクロの関係は何ですか?【lionel]
バージョンの読み取りと問題点 2017-01-14両トマト時計:1.1節理解とコード完成、1.2節見始めたばかり C++の新しい標準は変数テンプレートの概念を導入した. クラステンプレートを関数実参の例として、簡単に理解できますが、実際の応用シーンでは、今のところよく言えません.
2017-01-15 2個のトマト時計:1.2と1.3節理解とコード完成 現在これらはただ知っているだけで、まだ完全に覚えていないので、アプリケーションシーンがもっと分かりません.
2017-01-16 2個トマト時計:1.4終了 この部分は教科書で見ただけで、完全に消化されていないので、もう一度戻ってみる必要があります. C++11と組み合わせて一緒に見なければなりませんか?【lionel】
2017-01-17『C++STL開発技術ガイド』のchap 2 を見た.
1コンテンツ
1.1汎用およびテンプレート
1.1.1汎用の概念
T max( T x, T y) {}
//ここでTはタイププレースホルダです.1.1.2 C++テンプレートとその定義
template T max(R x, S y){}
template
1.1.3いくつかの説明とまとめ
template
は初期にもtemplate
と書かれていたが、このようなauto i=100;
auto Multiply(T t, U u)->decltype(t*u) {return t*u;}
pi
【作者は更に多く紹介していないで、C++11をめくることができます】1.2.1テンプレートパラメータの種類
MyTest>TT;
template
1.2.2テンプレートパラメータと実パラメータの結合
add(45,46);
は直接add(45,46);
1.3特化テンプレートとテンプレートの具現規則
1.3.1特化(特列化)テンプレート
tmplate<>
template struct Test{}
template<> struct Test{}
1.3.2テンプレートの具現
1.4右参照とテンプレート
1.4.1右値参照
T& = lvalue;//
とconst T& = lvalue;//
const T& = rvalue;
T&& =rvalue;
1.4.2右参照の適用1-転送の意味
T&& move(T& val);
static_cast()
:この変換はパラメータが右の値の場合にのみ役立ちます.static_cast()
を関数テンプレートstd::forwardにカプセル化し、Func(forwad(a));
この章のコード
その他の教材に該当する章
バージョンの読み取りと問題点
pi
【作者は更に多く紹介していないで、C++11をめくることができます】