《數組》c++數組初始化(全)

  最近在複習算法,於是乎整理了幾個專題,今天的話將C++版本的數組整理出來了,後續還會更新stl,dfs,圖,樹,堆,排序等知識,盡情期待。

show Code:

#include<iostream>
#include<vector>
#define arrSize 10
#define row 5
#define column 4
#define height 3

using namespace std;

int main()
{
    //一維數組

    //靜態數組
    cout<<"一維靜態數組如下:"<<endl;
    int a1[arrSize]={1,2};//初始化數組前兩個元素,其它默認爲0;
    for(int i=0;i<arrSize;i++)
        cout<<a1[i]<<" ";
    cout<<endl;

    //動態數組
    cout<<"一維靜態數組如下:"<<endl;
    int *a2=new int[arrSize]{};
    for(int i=0;i<arrSize;i++)
        cout<<a2[i]<<" ";
    cout<<endl;
    delete [] a2;


    //二維數組
    int a3[row][column]={{1,2,3,4}};//初始化第一行
    cout<<"二維靜態數組如下:"<<endl;
    for(int i=0;i<row;i++)
    {
        for(int j=0;j<column;j++)
        {
            cout<<a3[i][j]<<" ";
        }
        cout<<endl;
    }

    cout<<"二維動態數組如下:"<<endl;
    int **a4=new int*[row];
    for(int i=0;i<row;i++)//每行都要調用構造函數對數組進行初始化。
    {
        a4[i]=new int[column];
    }
    int times=0;
    for(int i=0;i<row;i++)
        for(int j=0;j<column;j++)
            a4[i][j]=times++;
    for(int i=0;i<row;i++)
    {
        for(int j=0;j<column;j++)
        {
            cout<<a4[i][j]<<" ";
        }
        cout<<endl;
    }

    for(int i=0;i<row;i++)//調用析構函數,對每個行的數組進行內存釋放。
      delete [] a4[i];
    delete [] a4;//釋放a4數組內存

    cout<<"容器實現二維數組如下:"<<endl;
    vector<vector<int>> a5(row);
    vector<vector<int>>::iterator iter1;//二維容器的迭代器
    vector<int>::iterator iter2;//一維vector的迭代器
    //初始化
    int value=0;
    for(iter1=a5.begin();iter1<a5.end();iter1++)
    {
        (*iter1).resize(column);//設置每一行的元素個數
        for(iter2=iter1->begin();iter2<iter1->end();iter2++)//iterator->begin(); iterator.begin()報錯。
        {
            *iter2=value;
            value+=2;
        }
    }

    for(iter1=a5.begin();iter1<a5.end();iter1++)
    {
        for(iter2=iter1->begin();iter2<iter1->end();iter2++)
            cout<<*iter2<<" ";
        cout<<endl;
    }

    //多維數組 以三維數組爲例
    cout<<"3維靜態數組如下:"<<endl;
    int a6[row][column][height];
    value=0;
    for(int i=0;i<row;i++)
        for(int j=0;j<column;j++)
            for(int k=0;k<height;k++)
                a6[i][j][k]=value++;

     for(int i=0;i<row;i++)
     {
         for(int j=0;j<column;j++)
        {
             for(int k=0;k<height;k++)
                {
                    cout<<a6[i][j][k]<<" ";
                }
             if(j!=column-1)
                cout<<"next: ";
        }
        cout<<endl;
     }

     cout<<"3維動態數組如下:"<<endl;
     int rows=6;
     int*** a7=new int**[rows];//只有第一維可是變量,其它維數必須是常量,否則報錯。
     //初始化:
     value=0;
     for(int i=0;i<rows;i++)
     {
        a7[i]=new int* [column];
        for(int j=0;j<column;j++)
        {
            a7[i][j]=new int[height];
            for(int k=0;k<height;k++)
                {
                   a7[i][j][k]=value;
                   value+=2;
                }
        }
     }

     for(int i=0;i<row;i++)
     {
         for(int j=0;j<column;j++)
        {
             for(int k=0;k<height;k++)
                {
                    cout<<a7[i][j][k]<<" ";
                }
            if(j!=column-1)
                cout<<"next: ";
        }
        cout<<endl;
     }

    return 0;
}

show Result:

補充一點:

vector其實也可以不用迭代器iterator訪問,也可以用數組的訪問方式,for循環,v[i][j]來訪問!

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章