c++primerノート、8(IOライブラリ)、9章(シーケンスコンテナ)

3798 ワード

第八章
  • IOオブジェクトのコピーや付与はできません.IOオブジェクトをコピーできないため、パラメータと戻りタイプをストリームタイプに設定することはできません.IO操作を行う関数は通常、参照でストリームを渡し、戻ります.IOオブジェクトの読み書きはステータスを変更するため、渡され、返される参照はconstの
  • ではありません.
  • ストリームは異なる状態であり、1つのストリームがエラーが発生すると、その後のIO操作が失敗する.(1)badbitは、リカバリ不可能な読み書きエラーなどのシステムレベルのエラーを表す.(2)回復可能なエラーが発生したfailbitは、所望の読み書き値が1文字読み取った場合にセットされる.(3)ファイル終了位置に達するとeofbitもfailbitもセットされる.(4)ストリームを体とするよ健が使うコードは!fail(); (5)ストリームオブジェクトのrdstateメンバーを呼び出してiostate値を返し、ストリームの現在の状態を返すことができる.
    auto old_state = cin.rdstate();   //  cin     
    cin.clear();                      // cin  
    cin.setstate(old_state);          // cin      
    //  failbit badbit,          
    cin.clear(cin.rdstate() & ~cin.failbit & ~cin.badbit);   
  • バッファリフレッシュの原因:(1)プログラムが正常に終了した;(2)バッファが満杯の場合;(3)endlのようなマニピュレータを使用してリフレッシュを表示する.(4)各出力の後、マニピュレータunitbufを使用してストリームの内部状態を設定してバッファを空にすることができ、デフォルトではcerrに対してunitbufを設定する.
    cout << unitbuf;  //            
    cout <//         
    (5)ある出力ストリームが別のストリームに関連付けられ、読み書きが関連付けられたストリームのバッファがリフレッシュされる.デフォルトではcinとcerrはcoutに関連付けられているため、cinの読み取りまたは書き込みはcoutのバッファ被率
    cin.tie(&cout);    // cin cout     
    
    ostream *old_tie = cin.tie(nullptr);   //cin        
    cin.tie(old_tie);    //  cin cout      
  • をリフレッシュする.
    第九章
  • あるコンテナを別のコンテナのコピーを初期化する場合、2つのコンテナのタイプとその要素タイプは一致しなければならないが、iの範囲をコピーするために反復器パラメータを渡す場合、同じ
  • のコンテナタイプは要求されない.
  • 内蔵配列タイプではオブジェクトコピーや付与操作はできませんが、arrayにはこの制限はありません.
  • assign操作は、左コンテナのすべての要素
  • をパラメータで指定する要素(のコピー)で置き換える.
  • swapの2つのarrayは本当に彼らの要素を交換し、他の容器に対しては交換容器の内部データ構造
  • にすぎない.
  • 要素を1つのvector、string、またはdequeに挿入すると、コンテナを指すすべての反復器、参照、およびポインタが無効になります.
  • arrayとforwardを除くListのほか、すべてのシーケンスコンテナでpush_がサポートされています.back、string
  • を含む
  • insert関数は、要素を反復器で指定する位置の前の
  • に挿入します.
  • emplace_front、emplace、emplace対応とpush_front、insert、push_backは、emplaceメンバー関数を呼び出すと、パラメータを要素タイプに渡すコンストラクション関数であり、emplaceメンバーは指定したメモリ空間で要素
  • を直接構築する.
  • atメンバー関数は、下付き要素文字に似ていますが、下付き文字が境界を越えると、atはout_を放出します.of_range異常
  • forward_Listは一方向チェーンテーブルで、1つの要素の前駆要素にアクセスできません.コンテナはinsert_を提供しています.after、emplace_afterとerace_afterオペレーションでは、elem 3を削除するには、elem 2を指す反復器を使用してerase_を呼び出す必要があります.aafter
  • 反復器に要素を追加したり削除したりすると、反復器が無効になる可能性があります.そのため、容器の操作を変更するたびに反復器を再配置することを保証する必要があります.プログラムは、各サイクルステップにおいて反復器
  • を更新することを保証しなければならない.
  • コンテナのsizeとは、すでに保存されている要素の数を指し、capacityはメモリ領域を割り当てずに最大でどれだけの要素を保存できるか
  • です.
  • to_string(val)は、valのstring表現を返すリロード関数のセットであり、valは任意の演算タイプ
  • であってもよい.
  • コンテナアダプタは、既存のコンテナタイプを受け入れ、異なるタイプ、stack、queue、priorityのように動作します.Queueはすべてシーケンスコンテナアダプタです.すべてのアダプタの偶数要求コンテナは要素を追加および削除する能力を有するため、アダプタはarray
    //  vector      
    stack<string, vector<string>> str_stk;
  • に構築できない.