方法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++编程语言中,动态数组是一种非常重要的数据结构,它允许程序员在程序运行时根据需要分配和释放内存。动态数组不同于静态数组,后者在编译时就需要确定大小,而动态数组可以在运行时动态地调整大小。本篇将深入...
1. 使用`new`运算符:在C++中,我们通常通过`new`运算符来申请一维动态数组。例如,如果我们想创建一个大小为n的一维整数数组,可以这样写: ```cpp int *arr = new int[n]; ``` 这段代码会在堆上分配大小为n个...
### C++动态二维数组的申请、赋值、使用、释放及作参数详解 #### 一、引言 在C++编程中,动态二维数组是非常重要的数据结构之一,它能够根据程序运行时的需求灵活地分配内存空间。本文将详细介绍如何在C++中创建、...
在C++编程语言中,动态数组是一种非常重要的数据结构,它允许程序员在程序运行时根据需要改变数组的大小。CNewArr 是一个自定义的C++类,它为动态数组提供了一种方便的抽象,支持多种数据类型,如整型(int)、字符...
在C++编程中,"不定长数组"是一个关键概念,特别是在处理动态数据时。传统的C++数组在声明时需要指定其长度,而不定长数组允许我们在运行时根据需要分配和调整大小。这种特性使得程序更加灵活,能更好地适应变化的...
在定义数组时,需要在变量名后面加上方括号,并在方括号中指明欲申请的数组元素个数,以分号结束。例如:float a[100];定义了一个名为a的数组,分配了100个float类型元素的内存。 数组元素可以使用下标来访问,例如...
动态申请二维数组
C++中的动态数组(Dynamic Array)是指动态分配的、可以根据需求动态增长占用内存的数组。为了实现一个动态数组类的封装,我们需要考虑几个问题:new/delete的使用、内存分配策略、类的四大函数(构造函数、拷贝构造...
动态申请一维数组
二维动态数组在C++中通常用指向指针的指针表示,因为C++不支持真正的多维数组动态分配。下面是如何创建一个`int[2][3]`的二维动态数组: ```cpp int **ppi = new int*[2]; for(int i = 0; i ; i++) { ppi[i] = new...
本文将详细讨论如何在C++中申请和释放二维动态数组,以及与之相关的内存管理和指针基础知识。 首先,理解二维数组的本质是关键。在C++中,二维数组可以被视为一维数组的数组,也就是说,每个数组元素本身又是一维...
在C++编程中,二维动态数组的申请与释放是一个重要的概念,特别是在处理大规模数据或内存管理时。本文将深入探讨二维动态数组的创建、使用以及内存管理。 首先,理解二维数组的本质是关键。二维数组可以被视为一维...
本文将深入探讨`new`、`delete`操作符,以及如何处理指向连续空间的指针、数组和内存释放与申请。通过理解这些基本概念,开发者可以更好地控制程序的内存使用,防止内存泄漏,并优化性能。 首先,我们来了解`new`和...
当动态数组需要扩大时,它需要申请新的内存空间来存储额外的元素,然后将现有元素迁移过去。这通常涉及到计算新大小、分配新内存、复制元素和释放旧内存等一系列操作。 4. **内存管理**:在动态数组中,需要注意...
C/C++ 数组与指针彻底总结 本篇文章详细讲解了指针、指针数组、数组指针、指针的指针等的应用,旨在帮助读者深入理解 C/C++ 语言中的数组和指针概念。 一、指针数组 指针数组是一个数组里存放的都是同一个类型的...
在C++编程中,动态开辟二维或三维数组是常见的需求,尤其是在处理大量数据或需要灵活调整数组大小的情况下。本文将详细介绍如何使用C++标准库中的`vector`容器来实现这一功能,以及如何结合MPI(Message Passing ...
在计算机编程中,特别是在C++中,动态数组是一种非常重要的数据结构,它允许程序在运行时根据需要分配或释放内存资源。本篇文章将详细解析一段关于动态数组申请与释放的代码,并深入探讨其背后的原理。 #### 一、...
### 数组一维2维3维动态申请及用Vector的表示方法 #### 一、变长一维数组 变长数组通常指的是那些在编译时无法确定具体长度、需要在程序运行过程中动态分配内存的数组。对于这类数组,C++提供了多种实现方式。 1....
模块名称:启程动态数组C++模板类,本代码提供对动态数组的支持,在内存中程序将数据分块存放,避免了大块内存的申请,同时也和普通的双向链表不同的是本代码提供了对内部数据的快速索引,大大提高了数据访问速度...