关于二维数组动态申请

来源:互联网 发布:买网络电视要注意什么 编辑:程序博客网 时间:2024/06/07 10:29

 C++中有三种方法来动态申请多维数组

  (1)C中的malloc/free

  (2)C++中的new/delete 

  (3)STL容器中的vector



1.c语言

1.一维

 int *p;            printf("请输入开辟的数组长度:");      scanf("%d",&m);      p = (int*)malloc(sizeof(int)*m);//动态开辟        printf("请输入数据:");      for(i = 0; i < m ; i++)          scanf("%d",&p[i]);        printf("输出数据:\n");      for(i = 0; i < m; i++)          printf("%d ",p[i]);      free(p);  



2.二维

//动态开辟二维数组  void dynamicCreate2Array()  {      int m,n;      int i,j;      int **p;        printf("请输入数组行和列:");      scanf("%d%d",&m,&n);        p = (int**)malloc(sizeof(int*)*m); //开辟行        for(i = 0; i < m; i++)      {          *(p+i) = (int*)malloc(sizeof(int)*n);//开辟列      }      //输入数据      printf("请输入数:");      for(i = 0 ; i < m;i++)          for(j = 0; j < n;j++)              scanf("%d",&p[i][j]);            //输出数据      for(i = 0 ; i < m;i++)      {          for(j = 0; j < n;j++)          {             printf("%3d ",p[i][j]);          }          printf("\n");      }      //释放开辟的二维空间      for(i = 0; i < m;i++)          free(*(p+i));  }


2.new 数组


1.一维

       int *p = new int[len];            cout<<"请输入数据:";      for(int i = 0; i < len; i++)          cin>>p[i];            cout<<"输出数据:"<<endl;      for(i = 0; i < len; i++)          cout<<setw(4)<<p[i];            delete[] p;


2..动态开辟二维数组

#include <iostream>#include<vector>using namespace std;vector<int> s;int main(){    //申请    int **a;    a=new int *[10];//一级指针数组    for(int i=0;i<10;i++)        a[i]=new int [10];//数据      //存入    for(int i=0;i<10;i++)        for(int j=0;j<10;j++)          a[i][j]=i+j;  //输出    for(int i=0;i<10;i++)   {   for(int j=0;j<10;j++)         cout<<a[i][j]<<"   ";         cout<<endl;    }  //释放    for(int i=0;i<10;i++)        delete []a[i];    delete []a;    cout << "Hello world!" << endl;    return 0;}

3.vector

545

         //注意下面这一行:vector <int后两个 "> "之间要有空格!否则会被认为是重载 "> > "。       vector<vector<int> > p(m,vector<int>(n));            cout<<"请输入数据:";      for(int i = 0 ; i < m ; i++)          for(int j = 0; j < n; j++)              cin>>p[i][j];                cout<<"输出数据:"<<endl;      for(i = 0; i < m; i++)      {          for(int j = 0; j < n; j++)              cout<<setw(3)<<p[i][j];          cout<<endl;      } 


来源点击打开链接


0 0
原创粉丝点击