【C/C++】配列定義および初期化

2489 ワード

一、一次元配列
  • 静的int array[100];//配列arrayを定義し、配列を初期化していない
  • 静的int array[100]={1,2};//配列array
  • を定義して初期化
  • 動的int*array=new int[100].  delete []array;//長さ100の配列array
  • が割り当てられています
  • 動的int*array=new int[100](1,2);  delete []array;//長さ100の配列arrayの初期化前の2つの要素
  • 二次元配列
  • 静的int array[10][10];//配列が定義されており、
  • は初期化されていません.
  • 静的int array[10][10]={{1,1},{2,2}}//配列array[0][0,1]およびarray[1][0,
  • ]を初期化
  • 動的int(*array)[n]=new int[m][n];  delete []array;
  • 動的int**array=new int*[m];  for(i) array[i] = new int[n];  for(i) delete []array[i]; delete []array;//複数回解析
  • 動的int*array=new int[m][n];  delete []array;//配列行別ストレージ
  • 三、多次元配列
  • int* array = new int[m][3][4];第1次元のみが変数であり、他の次元は定数でなければなりません.そうしないと、
  • とエラーが発生します.
  • delete []array;メモリを解放する必要があります.そうしないと、メモリが漏洩します.
    四、STL容器で配列を宣言する
  • 第1の方法
  • #include 
    #include 
    #include 
    #include 
    using namespace std;
     
    int main()
    {
        int N=5, M=6; 
        vector > obj(N); //          5 
        for(int i =0; i< obj.size(); i++){ //       5 6 ,   0  
            obj[i].resize(M); //         obj[i][M]
        }
    
        for(int i=0; i< obj.size(); i++){ //          
            for(int j=0; j < obj[i].size(); j++){
                cout << obj[i][j] << " ";
            }
            cout << "
    "; } return 0; }
  • 第2の方法
  • #include 
    #include 
    #include 
    #include 
    using namespace std;
     
    int main()
    {
        int N=5, M=6; 
        vector > obj(N, vector(M)); //        5 6  
     
        for(int i=0; i< obj.size(); i++){ //         
            for(int j=0; j < obj[i].size(); j++){
                cout << obj[i][j] << " ";
            }
            cout << "
    "; } return 0; }

    五、動的配列初期化
          1. 要素は要素タイプのデフォルト値にのみ初期化できますが、配列変数のように、初期化リストで配列要素に異なる初期値を指定することはできません.
          2. 組み込みデータ型要素の配列では、()を使用して、指定したプログラムが初期化操作を実行することを表示する必要があります.そうしないと、プログラムは初期化操作を実行しません.
        int *pia1 = new int[10]; //           
        int *pia2 = new int[10]();  //         0

          3. 文字型要素の配列は、()を使用するかどうかにかかわらず、デフォルトのコンストラクタを自動的に呼び出して初期化されます.
        string *psa1 = new string[10];  //                
        string *psa2 = new string[10]();  //