C/C++配列初期化のまとめ

1399 ワード

目次
配列定義を初期化しないとランダムに割り当てられます
配列初期化のいくつかの形式
配列を固定値に初期化
memset(配列名、値、sizeof(配列名))
fill(begin(),end(),value)
以前は配列初期化を習い始めたばかりで、PAT試験を受けることも含めて、胡凡の「アルゴリズムノート」を見て、だんだんはっきりしてきました.
  • 配列定義非初期化は、
  • にランダムに割り当てられる.
    したがって、配列のすべての要素が下に1つずつ値を付けていないが、また使用される場合は、最後に定義だけで初期化しないでください.問題をもたらす.
  • 配列初期化のいくつかの形式
  • は直接{}:a[10]={}を用いることができ、a[10]配列のすべての要素を0にすることができる.
  • は{}内に0:a[10]={}を含んでもよいし、a[10]配列のすべての要素を0にすることもできる.
  • {}内に値を書くと、最初の要素がこの値になるだけで、後ろは0:a[3]={5}で、配列は実際に{5,0,0}
  • に初期化されます.
  • 配列は、ある固定値
  • に初期化する.
    配列を固定値に初期化できます.(C++)または(C)のmemset()関数と、使用中のfill()関数の2つの方法があり、fill関数はコンテナと配列を初期化できます.
  • memset(配列名、値、sizeof(配列名))
  • memset()を使用する場合にのみ0または-1に初期化することを推奨します.menset()関数の機能性はfill()関数に及ばず、実行速度が速いという利点がある.
    プログラムの例:
    #include 
    int main(){
        int a[10];
        memset(a,5,sizeof(a));
        for(int i=0;i<10;i++)
            printf("%d",a[i]);
        return 0;
    }
    
    //output:5555555555
  • fill(begin(),end(),value)

  • fill()は、配列とコンテナ内の区間を同じ値に割り当てることができます.memset()とは異なり、ここでの付与値は配列タイプ対応範囲の任意の値であってもよい.
    プログラムの例:
    #include 
    #include 
    using namespace std;
    int main(){
        int a[10];
        fill(a,a+5,233);
        for(int i=0;i<10;i++)
            cout<

    ここからもa[]の後ろの要素がランダムに割り当てられていることがわかる.
    memset()ではなくfill()を使用することを推奨します.