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");
}

运行结果

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/260405.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

netty源码:(29)ChannelInboundHandlerAdapter

它实现的方法都有一个ChannelHandlerContext参数&#xff0c;它的方法都是直接调用ChannelHandlerContext参数对应的方法&#xff0c;该方法会调用下一个handler对应的方法。 可以继承这个类&#xff0c;重写感兴趣的方法,比如channelRead. 这个类有个子类&#xff1a;SimpleC…

调度算法(一)-第二十一天

目录 各种调度算法的学习思路 先来先服务&#xff08;FCFS&#xff09; 短作业优先&#xff08;SJF&#xff09; 各种调度算法的学习思路 1、算法思想 2、算法规则 3、算法用于作业调度还是进程调度 5、抢占式还是非抢占式 6、优点和缺点 7、是否会导致饥饿&#xff08;进程…

【音视频 | AAC】AAC格式音频文件解析

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…

C++刷题 -- KMP算法

C刷题 – KMP算法 文章目录 C刷题 -- KMP算法1.算法讲解2.算法实现 https://leetcode.cn/problems/find-the-index-of-the-first-occurrence-in-a-string/description/ 1.算法讲解 KMP算法是一种字符串匹配算法&#xff0c;当出现字符串不匹配时&#xff0c;可以记录一部分之…

PSP - 结构生物学中的机器学习 (NIPS MLSB Workshop 2023.12)

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/135120094 Machine Learning in Structural Biology (机器学习在结构生物学中) 网址&#xff1a;https://www.mlsb.io/ Workshop at the 37th Co…

计算机网络-进阶

目录 易混淆物理层数据链路层网络层nat如何实现私有ip通信IP数据报 格式解析tcp 连接tcp流量控制滑动窗口拥塞控制 报文捕获 wireshark路由模拟器 enspcdn代理服务器 VS cdn VS web cache 计算机有了物理地址&#xff0c;为什么还要有ip地址&#xff1f;单播 多播 广播 传输层会…

基于Java+SpringBoot+Mybaties-plus+Vue+ElementUI+Vant 电影院订票管理系统 的设计与实现

一.项目介绍 基于SpringBootVue 电影院订票管理系统 分为前端和后端。 前端&#xff08;用户&#xff09;&#xff1a; 登录后支持查看首页、电影、影院和我的信息 支持查看正在热映和即将上映的电影信息 支持购票&#xff08;需选择影院座位&#xff09;、看过&#xff08;评论…

力扣:203. 移除链表元素(Python3)

题目&#xff1a; 给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;力扣&#xff08;LeetCode&#xff09;官网 …

基于springboot+mybatis+mysql+jsp房屋租赁管理系统

基于springbootmybatismysqljsp房屋租赁管理系统 一、系统介绍二、功能展示1.项目内容2.项目骨架3.数据库3.登录4.首页5.房源管理6.个人中心7.房屋详情 四、其它1.其他系统实现五.获取源码 一、系统介绍 项目名称&#xff1a;基于Spring boot的房屋租赁管理系统 项目架构&…

对77,539个基因组进行的遗传关联分析揭示了罕见疾病的病因

今天给同学们分享一篇实验文章“Genetic association analysis of 77,539 genomes reveals rare disease etiologies”&#xff0c;这篇文章发表在Nat Med期刊上&#xff0c;影响因子为82.9。 结果解读&#xff1a; 稀有水库 关系型数据库&#xff08;RDB&#xff09;提供了一…

vue关闭当前路由页面并跳转到其父页面

1.dom中添加关闭或取消按钮 <el-button type"primary" class"blueLinearbg cancelBtn" click"cancel" >取 消</el-button>2.cancel方法中 /*取消或关闭*/cancel(){this.$store.dispatch("tagsView/delView", this.$route)…

echarts 实现x轴文字倾斜显示

显示效果 关键代码 xAxis: {axisLabel: {show: true,rotate: 35,//35度角倾斜显示},}, 完全代码 var optSaleType {title: {text: ,textStyle: {color: #000,fontSize: 14}},tooltip: {},grid: {left: 0,right: 0,bottom: 0,containLabel: true,},xAxis: {axisLabel: {show:…

苹果cms论坛多播放源自动采集 /采集在线影视网站/苹果CMS影视站采集器

源码介绍&#xff1a; 苹果cms论坛多播放源自动采集、采集在线影视网站&#xff0c;作为苹果CMS影视站采集器&#xff0c;它能轻松获取在线影视网站资源。 苹果 cms 论坛这是一个基于Vue和Gin实现的在线观影网站。项目采用 vite vue 作为前端技术栈, 使用 ElementPlus 作为 …

基于mpvue的小程序项目搭建的步骤(附精选源码32套,涵盖商城团购等)

mpvue 是美团开源的一套语法与vue.js一致的、快速开发小程序的前端框架&#xff0c;按官网说可以达到小程序与H5界面使用一套代码。使用此框架&#xff0c;开发者将得到完整的 Vue.js 开发体验&#xff0c;同时为 H5 和小程序提供了代码复用的能力。如果想将 H5 项目改造为小程…

ES排错命令

GET _cat/indices?v&healthred GET _cat/indices?v&healthyellow GET _cat/indices?v&healthgreen确定哪些索引有问题&#xff0c;多少索引有问题。_cat API 可以通过返回结果告诉我们这一点 查看有问题的分片以及原因。 这与索引列表有关&#xff0c;但是索引…

海康rtsp拉流,rtmp推流,nginx部署转flv集成

海康rtsp拉流&#xff0c;rtmp推流&#xff0c;nginx部署转flv集成 项目实际使用并测试经正式使用无问题&#xff0c;有问题欢迎评论留言 核心后台java代码&#xff1a; try {// FFmpeg命令String command "ffmpeg -re -i my_video.mp4 -c copy -f flv rtmp://localho…

opencv入门到精通——鼠标事件和Trackbar控件的使用

目标 了解如何在OpenCV中处理鼠标事件 您将学习以下功能&#xff1a;cv.setMouseCallback() 了解将轨迹栏固定到OpenCV窗口 您将学习以下功能&#xff1a;cv.getTrackbarPos&#xff0c;cv.createTrackbar等。 简单演示 在这里&#xff0c;我们创建一个简单的应用程序&am…

飞天使-k8s知识点4-验证安装好后功能

文章目录 接k8s知识点2之验证集群功能创建dashboard 接k8s知识点2之验证集群功能 [rootkubeadm-master2 tmp]# kubectl run net-test1 --imagealpine sleep 36000 pod/net-test1 created [rootkubeadm-master2 tmp]# kubectl get pod NAME READY STATUS RESTART…

小型洗衣机好用吗?目前口碑最好的四款迷你洗衣机分享

作为一个上班族&#xff0c;每天回到家中真的不愿意再动了&#xff0c;市面上也越来越多懒人福利神器&#xff0c;而内衣洗衣机可以称得上是人类最幸福的小家电&#xff0c;它不仅可以释放我们的双手&#xff0c;而且还比我们自己手洗得干净&#xff0c;功能和清洁力都比我们传…

B039-SpringMVC基础

目录 SpringMVC简介复习servletSpringMVC入门导包配置前端控制器编写处理器实现Contoller接口普通类加注解(常用) 路径问题获取参数的方式过滤器简介自定义过滤器配置框架提供的过滤器 springMVC向页面传值的三种方式视图解析器springMVC的转发和重定向 SpringMVC简介 1.Sprin…