方法1、C++使用vector方便生成:
#include <iostream>
#include <vector>
#include <iomanip>
using namespace std;
int main()
{
int i,
j,
m, //行数
n; //列数
cout << "input value for m,n:";
cin>>m>>n;
//注意下面这一行:vector<int后两个">"之间要有空格!否则会被认为是重载">>"。
vector<vector<int> > vecInt(m, vector<int>(n));
for (i = 0; i < m; i++)
for (j = 0; j < n; j++)
vecInt[i][j] = i*j;
for (i = 0; i < m; i++)
{
for (j = 0; j < n; j++)
cout<<setw(5)<<vecInt[i][j]<<":"<<setw(9)<<&vecInt[i][j];
cout<<endl;
}
return 0;
}
方法2:用vector可以,用裸指针也可以创建,只不过要小心使用,因为很容易造成内存泄露:
int main()
{
//类型定义,将int*指针定义成Row
typedef int* Row;
int row, col;
cin >> row >> col;
Row* rows = new Row[row];
for(int i = 0; i < row; ++i)
{
//有小(),直接将各项初始化为0
//rows[i] = new int[col]();
rows[i] = new int[col];
}
for(int i = 0; i < row; ++i)
{
delete [] rows[i];
}
delete [] rows;
}
3、C++动态申请多维数组
在C++中为数组动态分配内存的格式如下:
第一步:声明
type (p)[常量1][常量2]...[常量n];
第二步:申请
p=new type[x][常量1][常量2]...[常量n];
说明:先定义一个n维的数组指针,其中p是一个指针变量,x是一个整形变量,
然后申请一个第一维为x的n+1维数组,记住只有第一维x可变。
举例:
1、动态申请一个一维数组
int *p;
int x;
cin>>x;
p=new int[x];
2、动态申请一个二维整型数组
int (*p)[10];
int x;
cin>>x;
p=new int[x][10];
若执行这段程序,给x输入3,则相当于定义一个3行10列的
一个二维数组。实际是申请3102个存储单元,并把其首
地址返回给p,通过p来操纵这个动态数组。
3、动态申请一个三维数组
int (*p)[8][6];
int x;
cin>>x;
p=new int[x][8][6];
注意:
1、申请成功与否,看p的值,若p的值为NULL,则说明申请不成功,
反之,则申请成功。
2、动态申请的存储单元,使用之后应及时返还给系统,方法是:
delete p;即可。
(new 和 delete 、 new[] 和 delete[] 对应使用)
分享到:
相关推荐
这是我初学C++是遇到的问题--就是如何动态地申请二维数组? 现在把我的经验分享给大家! 里面包含三个源代码: 一个是动态申请一维数组,一个是动态申请二维数组,另一个是动态申请二维数组的应用--...
C++动态二维数组的申请、赋值、使用、释放以及作参数示例
c++动态数组的申请方法 不管是一维的 还是二维的 都有 供大家互相学习
C++简单模拟实现不定长数组,简化操作
动态申请二维数组
C++中的动态数组(Dynamic Array)是指动态分配的、可以根据需求动态增长占用内存的数组。为了实现一个动态数组类的封装,我们需要考虑几个问题:new/delete的使用、内存分配策略、类的四大函数(构造函数、拷贝构造...
动态申请一维数组
NULL 博文链接:https://hzdiy.iteye.com/blog/736816
数组一维2维3维动态申请及用Vector的表示方法
模块名称:启程动态数组C++模板类,本代码提供对动态数组的支持,在内存中程序将数据分块存放,避免了大块内存的申请,同时也和普通的双向链表不同的是本代码提供了对内部数据的快速索引,大大提高了数据访问速度...
详细描述一维、二维、三维数组动态申请内存的方法,需要具备基本的c++语言知识
下面小编就为大家带来一篇浅谈C++内存分配及变长数组的动态分配。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
本代码提供对动态数组的支持,在内存中程序将数据分块存放,避免了大块内存的申请。同时,与普通的双向链表不同,本代码提供了对内部数据的快速索引,大大提高了数据访问速度。 本代码提供C、C++两个版本,可以任意...
内容:C和C++中关于二维数组的动态申请和释放的一些描述和示例。
。。。
。。。
此文件比较详细的介绍了用C++怎么动态的开辟二维三维数组。
使用vector申请多维数组的C++类实现,可以直接调用
其是数组没有为空的,只要你申请了空间(数组一定以就在栈上有自己的空间),空间里就有数据,可以输出.然而: 你用memset把数组空间全部赋值为0了,是可以判断的.但是需要判断空间的内容,即:a[i].word[0] a[i].word是数组...
指针与二维数组 数组指针 指针数组 多级指针