"Array" C++ array initialization (full)

  Recently I am reviewing the algorithm, so I have sorted out a few topics. Today, I have sorted out the C++ version of the array, and will update the knowledge of stl, dfs, graph, tree, heap, sorting, etc., and look forward to it.

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:

add another point:

In fact, vector can also be accessed without iterator, or can be accessed by array, for loop, v[i][j]!

 

Guess you like

Origin blog.csdn.net/Look_star/article/details/107016351