【C++】配列および基本動作


配列および一般的な操作
  • 配列:
  • 配列宣言:
  • 配列初期化:
  • 配列の一般的な操作:
  • vector初期化:
  • vector一般的な操作:
  • ps:詳細は、一般的な配列構造とアルゴリズムを参照してください.
    配列:
    配列とvector:要素の個数が不明な場合はvectorを使用します.
    配列宣言:
    配列宣言:a[d],aは配列名,dは配列の次元(次元が0より大きく、定数式である必要がある)定数式:値は変更されず、コンパイルプロセスで計算結果が得られる式.
    //            :
    const int max = 20;        //      
    const int limit = max+1;   //      
    int size = 15;             //       ,   int   const int
    const int a = get_size();  //       ,a       ,               
    

    複雑な配列の宣言:デフォルトでは、タイプ修飾子は右から左に順にバインドされます(内側から外側)
    int *a[10];    //  10   int       (    )
    int (*a)[10];  //     10        (    )
    int *(&a)[10]; //a        ,    10   
    

    配列の初期化:
    1 D配列の初期化:
    //  :
    int value[10];
    int value[10]={1,2};
    double balance[] = {1000.0, 2.0, 3.4, 7.0, 50.0};
    
    //  :
    int* array = new int[100]; 
    delete []array;
    
    int* array = new int[100]{1,2};  //        
    delete []array; 
    

    2 D配列の初期化:
    //  :
    int a[5][6];
    
    //  :
    int (*arr)[6]= new int[5][6];
    delete[] arr;
    

    配列の一般的な操作:
    配列要素へのアクセス:
    double a = b[9];
    

    配列のサイズを返します.
    int a[]={1,2,3,4};
    int num = sizeof(a)/sizeof(a[0]);
    

    コピーと割り当ては許可されていません:
    int a[]={1,2,3};
    int b[]=a;  //  
    b=a;        //  
    

    vector初期化:
    vector<int> vec;        //    int   
    vector<int> vec(5);     //         5 int  
    vector<int> vec(10, 1); //         10    1   
    
    vector<int> tmp;
    vector<int> vec(tmp);   //    tmp     vec  
    
    vector<int> tmp(vec.begin(), vec.begin() + 3);  //   vec  0   2     tmp
    

    vectorの一般的な操作:
    vector共通関数の要約:
  • push_back配列の最後にデータ
  • を追加
  • insert増加
  • pop_back配列の最後のデータ
  • を削除
  • clear現在のvector
  • をクリア
  • erase削除
  • atは、番号付け位置のデータ
  • を得る.
  • front得られた配列ヘッダの参照(begin,endはポインタを返す)
  • backは配列の最後のセルの参照
  • を得る.
  • beginは、最初の要素のポインタ
  • を返す.
  • endは、最後の要素のポインタ
  • を返す.
  • size現在使用するデータのサイズ
  • max_size最大許容vector要素数
  • capacity vectorが実際に収容できる大きさ
  • empty vectorが空かどうかを判断する
  • swap交換
  • assign現在のvector
  • をカッコ内の値で設定する.
    vector常用関数の詳細:1.関数push_を追加back()         insert()
    //  push_back():
    vector<int> arr;
    for (int i = 0; i < 10; i++){
    	arr.push_back(i);
    }
    
    //  insert()
    v.insert(v.begin(),8);  //         。  
    v.insert(v.begin()+2,1);//                  
    
    v.insert(v.end(),3,1);//              3 1
    
    v.insert(v.end(),v2.begin(),v2.end());//              v2    
    

    2.関数pop_を削除back()erase()clear()はvector内のデータしか消去できませんが、メモリ領域は解放されていません.メモリ領域を解放するにはarr.swap(vector()を使用します.
    //  pop_back()
    arr.pop_back();
    
    //  erase()
    arr.erase(arr.begin()+3); //   3   
    
    arr.erase(arr.begin()+2,arr.begin()+4); //  arr  [2,3)   (   2   )
    
    //  clear()
    arr.clear();
    

    3.遍歴関数at()front()back()begin()end()
    //  at()
    arr.at(3);   //vector       
    
    //  front() back()
    int front = arr.front();
    int back= arr.back();
    
    //  begin() end()
    vector<int>::iterator iter;
    iter = arr.begin()+4;
    cout << *iter << endl;
    
    //  begin()    
    for(vector<int>::iterator iter=arr.begin();iter!=arr.end();++iter){
    	cout<<" "<<*iter;
    }
    

    4.判定関数empty()はboolを返すが、0,1でもよい
    //  empty()
    cout << boolalpha;   //     0/1
    cout << " arr.empty(): " << arr.empty() << endl;
    

    5.サイズ関数size()vectorの要素の個数capacity()vectorが実際に収容できるサイズmax_Size()最大許容vector要素数値
    int size = arr.size();
    int cap = arr.capacity();
    int max = arr.max_size();
    

    6.その他の関数swap()assign()カッコ内の値を使用して現在のvectorを設定
    //  swap()
    vector<int> arr(4,10);
    arr.swap(vector<int> ());
    vector<int>().swap(arr);
    
    //  assign()
    vector<int> arr;
    vetor<int> first(4,10);
    arr.assign(7,3);             //    3
    arr.assign(first.begin(),first.end());