C++ 动态创建二维数组
背景知识:
对二维数组的理解方式至关重要:把二维数组看成是一种特殊的一维数组,它的元素又是一个一维数组。
例如:int a[3][4], 可以理解为定义了3个一维数组,即相当于 a[0], a[1], a[2], 而它们的每个元素又是一个包含4个元素的一维数组,即:
a[0]: a[0][0], a[0][1], a[0][2], a[0][3]
a[1]: a[1][0], a[1][1], a[1][2], a[1][3]
a[2]: a[2][0], a[2][1], a[2][2], a[2][3]
但我们为您习惯上把二维数组看成矩阵,所以二维数组也称为矩阵。
方法一:
因为二维数组也可以看成矩阵,所以整体思路是先给二维数组的每一行开辟一块空间,用来指向每一行(即存放每一行的地址);然后分别为每一行再开辟内存空间,用来管理列。
int main()
{int rows = 3; //行数int cols = 4; //列数//开辟一块内存空间来指向每一行(注意:每一行都是一维数组)。int** arr = new int* [rows];for (int i = 0; i < rows; i++) {//为每一行再开辟内存,管理列arr[i] = new int[cols]; //为二维数组赋初值}return 0;}
以上动态创建二维数组的方法属于C语言,只是C++也兼容这种方法。
拓展:动态创建二维数组
//自定义比较函数
bool cmp(int a[], int b[])
{if (a[0] != b[0]) return a[0] > b[0];if (a[1] != b[1]) return a[1] > b[1];if (a[2] != b[2]) return a[2] > b[2];
}int main()
{//创建一维数组并初始化int a[6] = { 1, 1, 1, 2, 2, 3 }; int b[6] = { 4, 4, 3, 9, 5, 9 }; int c[6] = { 3, 7, 5, 4, 8, 6 }; //动态创建二维数组int rows = 4;int cols = 3;int** re = new int* [rows]; for (int i = 0; i < rows; ++i){re[i] = new int[cols]; //赋值re[i][0] = a[i];re[i][1] = b[i];re[i][2] = c[i];}//sort()函数排序后输出sort(re, re + rows, cmp); for (int i = 0; i < rows; ++i)cout << re[i][0] << ' ' << re[i][1] << ' ' << re[i][2] << endl;return 0;
}
方法二:因为二维数据也可以看成特殊的一维数组,它的每个元素都是一个一维数组。整体思路:在C++种vector的底层就是一维数组(不定长),如果我们再给vector指定一个vector类型,就构成一个二维数组了。因此C++中还可以用vector来创建二维数组。
int main()
{int rows = 3; //行数int cols = 4; //列数//创建一个有rows行的二维数组arrayvector<vector<int>> array(rows);//设置每一行的元素个数for (int i = 0; i < rows; i++) {array[i].resize(cols);}//赋值array = { {1,4,3,5}, {1,4,7,8} , {1,3,5,6} };//输出for(auto p : array)cout<<p[0]<<' '<<p[1]<<' '<<p[2]<<' '<<p[3]<<endl;return 0;
}
C++ 动态创建二维数组相关推荐
- C语言-动态创建二维数组
文章目录 1 前言 2 动态创建的实现方法 2.1 方法1(适用于二级指针传递) 2.2 方法2(模拟C语言数组的储存方式) 1 前言 参照我之前的一篇文章 二维数组做函数的参数 文章中提到,当我们想 ...
- C++ 动态创建二维数组int** B = new int* [n];
#include <iostream> using namespace std;int main() {//动态创建一维数组int* A = new int[10]; //int A[10 ...
- c语言动态生成二维数组,C语言 动态创建二维数组
/*C语言 如何动态创建二维数组 转化为一维数组申请数组,创建和释放都比较简单 */ #include #include #include #define RANK 10 #define COLUMN ...
- C语言动态创建二维数组
在编程中有时需要使用二维数组作为buffer,下面是我写的一个二维数组的demo. 这里面涉及到几个内存操作的知识点,一个一个的来讲. 1. 创建两个1维数组,用于给二维数组填充值的时候使用. /*2 ...
- malloc动态创建二维数组(C语言)
c语言用malloc动态创建二维数组 #include <stdio.h> #include <stdlib.h> void fun(int m,int n){//行数,列数 ...
- 动态创建 二维数组和三维数组,最后将数据转为OPENCV图片显示
二维 //int **dpPT1 = new int*[Index_Qty];//动态申请二维数组//int **dpPT2 = new int*[Index_Qty];//int **dpPP = ...
- C++动态创建多维数组
众所周知,在c++里动态创建一个一维数组可以直接: int* arr = new int[length]; 但是,如果到了二维,这样是行不通的: int** arr = new int[length] ...
- python创建一个n*m的二维数组_Python中创建二维数组
Python中创建二维数组 二维数组 二维数组本质上是以数组作为数组元素的数组,即"数组的数组",类型说明符 数组名[常量表达式][常量表达式].二维数组又称为矩阵,行列数相等的矩 ...
- jupyter notebook多维数组运算_Python创建二维数组的正确姿势
List (列表)是 Python 中最基本的数据结构.在用法上,它有点类似数组,因为每个列表都有一个下标,下标从 0 开始.因此,我们可以使用 list[1] 来获取下标对应的值.如果我们深入下列表 ...
最新文章
- 拼音怎么写_老师:不会写的字用圈代替,看到孩子试卷,网友:人才
- 支付宝支付 第三集:搭建项目及测试(含代码)
- [攻防世界 pwn]——when_did_you_born
- 历时7周,当然了真正的安装时间没这么多,终于把集群安装好了
- 从源码的角度说说Activity的setContentView的原理(二)
- react如何获取表单数据
- Qt笔记-解决Q3DScatter加载QCustom3DItem时Cannot open the file问题
- 一些特殊的电脑快捷键
- [翻译] 物理引擎javascript实现
- 20200610每日一句
- 计算虚继承中对象占用的空间
- 零基础程序员如何自学编程?用这6种方法就够了!
- 如何免费下载优质的PPT模板?
- JLink的JTag和SWD引脚定义及接线说明
- c语言字符串把小写转换大写字母,c语言将字符串中的小写字母转换成大写字母...
- 毕业设计开题分析:MIPS指令集硬件化设计与实现
- conda deactivate python3_无法访问conda环境中的activate、deactivate或conda
- javaspringboot面试,挑战华为社招
- python爬虫进阶-每日一学(图片反爬-雪碧图)
- untiy游戏接入之uc_sdk(九游)