C++Primerノート2

2852 ワード

第三章文字列/ベクトル/配列
  • string
  • stringの定義と初期化:
  • string s1;
    string s2 (s1);
    string s2 = s1;
    string s3 = ("value")
    string s3 = "value";
    string s4(n,'c');   //s4    cc...cc(n c)
    
  • 標準入力では、stringオブジェクトは、最初の真の文字から次の空白文字まで、先頭の空白を自動的に無視します.入力時の空白文字を保持する場合はgetline()関数を使用します.
  • while(getline(cin,line)) //getline , line 。
  • size()関数はstringオブジェクトの長さを返します.

  • size()関数はstring::size_を返します.typeタイプの値.stringクラスおよびその他のほとんどの標準ライブラリタイプは、いくつかのセットタイプを定義しています.これらのセットタイプは、標準ライブラリタイプと機械に関係のない特性、タイプsize_を体現しています.typeはそのうちの1つです.シンボルレス整形数を返すため、1つの式にsize()関数がすでに存在する場合はintを使用しないでください.intとunsignedの混用による問題を回避できます.
  • stringオブジェクトの比較は、辞書の順序(大文字と小文字が敏感)に従います.
  • stringオブジェクトと文字のフォント値および文字列のフォント値を1つの文に混ぜて使用する場合は、各加算演算子の両側の演算オブジェクトの少なくとも1つがstringであることを確認する必要があります.

  • 歴史的理由と互換性Cのため、C++言語の文字列のフォント値は標準ライブラリタイプstringのオブジェクトではありません.
  • 範囲ベースfor文
  • for(declaration: expression)
       statement
    

    結果auto/decltypeはstringの文字を巡ることができます.文字列内の文字を変更する場合は、ループ変数を参照タイプとして定義できます.
    for( auto c : str);
    for( auto &c : str);
    
  • stringオブジェクトは、下付き[]でアクセスできます.下付き演算子が受信する入力パラメータはstring::size_typeタイプの値.戻り値は、その位置の文字の参照です.標準ライブラリでは、下付きラベルの合法性がチェックされていないため、不正な下付きラベルにアクセスすると、予知できない結果が発生します.
  • 標準ライブラリタイプvector
  • vectorは、すべてのオブジェクトのタイプが同じオブジェクトのセットを表します.各オブジェクトには、オブジェクトにアクセスするためのインデックスがあります.容器とも呼ばれる.
  • #include 
    using std::vector;
    
  • 初期化
  • vector v1;   //empty
    vector v2(v1); //v2    v1       ;   vector v2 = v1
    vector v3(n,val); //v3   n     ,        val;
    vector v4(n); //v4    n             。
    vector v5{a,b,c,...}; //   vector v5 = {a,b,c,...}
    
  • リストの初期値または要素数:場合によっては、初期化の真の意味は、初期値を渡すときにカッコまたはカッコに依存します.
  • vector v1(10); //v1 10   ,      0(     )。
    vector v2{10}; //v2 1   ,      10
    vector v3(10,1); //v3 10   ,      1
    vector v4{10,1}; //v4 2   ,    10,1。
    

    カッコを使用する場合、vectorオブジェクトを構築するために提供される値と言えます.カッコを使用している場合、初期化プロセスは、カッコ内の値を要素の初期値のリストとしてできるだけ処理します.リスト初期化を実行できない場合は、他の初期化方法が考慮されます.
  • vectorオブジェクトへの要素の追加:push_backは、値をvectorオブジェクトの末尾要素として「vectorオブジェクトの「末尾」に押す役割を果たします.
  • vector v1;
    for(int i = 0; i != 100; ++i)
        v1.push_back(i);    //        v1  。
    

    Javaの統合クラスでコンテナサイズを事前に設定するよりも、C++でサイズを指定するとパフォーマンスが低下する可能性があります.ループボディの内部にvectorオブジェクトに要素を追加する文が含まれている場合は、範囲forループ(for(v:t))は使用できません.
  • vectorも下付き操作をサポートし、対応する位置の要素の参照を返します.

  • size_を使用するにはtypeは、まずどのタイプで定義されているかを指定する必要があります.vectorオブジェクトのタイプには、常に要素のタイプが含まれています.vector::size_type //right vecotr::size_type //errorは下付き文字で要素にアクセスできますが、下付き文字で要素を追加することはできません.