《数组》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]来访问!

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值