C++_动态二维数组的两种方法

介绍

本文主要介绍使用 动态二维数组的两种方法
(PS:仅作创建 动态二维数组参考,详细使用方法根据需求自行改变)

  • 第一种:连续存储结构的 二维动态数组(需固定 列 大小,可通过下标访问)
    缺点:
    1.需要在设计二维数组前写死 列 的大小
    2.空间利用率不高
    优点:
    1.可以通过下标快速查找数据、修改数据(效率高)
  • 第二种:非连续存储结构 二维动态数组(不可以通过下标访问)
    缺点:
    1.不能随机查找,必须从第一个开始遍历,查找效率低
    2.需要逐级删除 二维动态数组
    优点:
    1.空间利用率高

源码

#include<iostream>

using namespace std;

//第一种方法:此方法创建的动态二维数组 是 “连续数组 并且 固定列数”
void TestFunc(unsigned int n)
{
	unsigned int i, j;
	//创建一个固定列为 5 大小的二维数组
	int(*array_two)[5] = new int[n][5];
	//赋值操作和操作正常二维数组一样
	for (i = 0; i < n; i++)
	{
		for (j = 0; j < 5; j++)
		{
			array_two[i][j] = i * 5 + j;
		}
	}
	//访问数据
	cout << array_two[2][3] << endl;
	//回收方法和普通数组一样
	delete[] array_two;
}
//第二种方法:此方法创建的动态二维数组 是 “非连续数组”
void TestFunc_printer(unsigned int Height, unsigned int Width)
{
	unsigned int i, j;
	//用二级指针创建 行 动态数组(也就是每一行的头部)
	int **array_two = new int *[Height];
	//循环 行 从头到尾赋值 列
	for (i = 0; i < Height; i++)
	{
		//一维数组创建 列 动态数组(也就是给每一行分配多少列)
		array_two[i] = new int[Width];
	}

	//访问方法
	for (i = 0; i < Height; i++)
	{
		for (j = 0; j < Width; j++)
		{
			//赋值
			array_two[i][j] = i * 5 + j;
		}
	}

	//此方法不能直接访问数据
	//cout << array_two[3][6] << endl;

	//二维动态数组的 访问方法
	for (i = 0; i < Height; i++)
	{
		for (j = 0; j < Width; j++)
		{
			if (i == 2 && j == 6)
			{
				//打印指定的值
				cout << array_two[i][j] << endl;
			}
		}
	}
	//删除方法
	//先删除 每一行中的每一列
	for (i = 0; i < Height; i++)
	{
		//删除一维数组
		delete[] array_two[i];
	}

	//此处直接删除 行 即可
	delete[] array_two;
}
void main()
{
	TestFunc(6);//创建一个 array_two[6][5] 的固定列的动态二维数组
	TestFunc_printer(3,9);//创建一个 array_two[3][9] 的非连续动态二维数组
	system("pause");
}

运行结果

在这里插入图片描述

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值