关于二维数组、三维数组及多维数组的深度理解及其建立方法(为个人理解,经过实践验证)

article/2025/8/26 11:22:21

关于一维数组大家并不陌生,原理很简单就是申请一块连续的存储空间,可是当多维数组与指针联系在一块的时候我们往往会出现迷茫,现在我来说一下我怎么理解的多维数组。

我认为多维数组只不过是通过申请多个指针数组的方法来表示一维数组的方法而已,本质上多维数组只有一块连续的空间用来存储数据,其余都为指针数组,通过指针数组来描述一维数组,从而表示成想要建立的多维数组。

也就是说X维数组的建立需要一个一维数组和(X-1)个指针数组,如:二维数组建立一个一维数组和一个指针数组;三维数组建立一个一维数组和两个指针数组;以此类推。

以建立二维数组,三维数组为例:

二维数组建立:

#include<iostream>
using namespace std;
int main()
{int a[9] = { 1,2,3,4,5,6,7,8,9 };//开辟一个一维数组
int* p[3];                        //开辟一个指针数组
for (int i = 0; i < 3; i++)p[i] = &a[3 * i];             //为指针数组赋值
for (int i = 0; i < 3; i++)       //验证理论for (int j=0; j < 3; j++)cout << p[i][j]<<endl;//p[3][3]型}

按照想法,建立一个一维数组, 建立一个指针数组,通过指针的指向从而表示出二维数组应该有的样子。

三维数组:

三维数组比较活跃,可以很简单改变其结构。如下:

p2[2][3][2]型:

#include<iostream>
using namespace std;
int main()
{int a[12] = { 1,2,3,4,5,6,7,8 ,9,10,11,12 };//开辟一个数组空间int* p1[6];                                 //开辟指针数组int** p2[2];                                //开辟二维指针数组for (int i = 0; i < 6; i++)                 //为其赋值p1[i] = &a[i * 2];for (int i = 0; i < 2; i++)p2[i] = &p1[i * 3];for (int i = 0; i < 2; i++)                 //验证理论for (int j = 0; j < 3; j++)for (int n = 0; n < 2; n++)cout << p2[i][j][n] << endl;    //p2[2][3][2]型
}

 

 p2[3][2][2]型:

#include<iostream>
using namespace std;
int main()
{int a[12] = { 1,2,3,4,5,6,7,8 ,9,10,11,12 };//开辟一个数组空间int* p1[6];                                 //开辟指针数组int** p2[3];                                //开辟二维指针数组for (int i = 0; i < 6; i++)                 //为其赋值p1[i] = &a[i * 2];for (int i = 0; i < 3; i++)p2[i] = &p1[i * 2];for (int i = 0; i < 3; i++)                 //验证理论for (int j = 0; j < 2; j++)for (int n = 0; n < 2; n++)cout << p2[i][j][n] << endl;//p2[3][2][2]型
}

如上是代码和结果。

那四维数组,五维数组也是如此。

综上可知多维数组本质上就是对一维数组的表示。

如有语言,语法错误还望海涵。


http://chatgpt.dhexx.cn/article/rpl3T5Nx.shtml

相关文章

初识多维数组—三维数组

三维数组&#xff0c;是指维数为三的数组结构。三维数组是最常见的多维数组&#xff0c;由于其可以用来描述三维空间中的位置或状态而被广泛使用。简单说&#xff0c;一维数组就是坐标轴上的x轴&#xff0c;只有一个方向。二维数组就是x轴y轴&#xff0c;组成了一个平面。三维数…

C语言之三维数组

前言&#xff1a; 之前学习C语言的时候仅仅是掌握了二维数组&#xff0c;但是并没有对三维数组进行研究&#xff0c;此情此景. . . . . .那就让我对先前研究的三维数组的相关知识发布一下吧&#xff0c;也许能够帮到你&#xff01;实际上&#xff0c;当你阅读此篇文章时&#x…

Cassandra的Allow Filtering

https://blog.csdn.net/qiaojialin/article/details/81709766 Cassandra 支持的查询语句很严格&#xff0c;首先 partition key 必须精确查询 缺少 partition key 的等值过滤条件时就需要加Allow Filetering

All matches were filtered out by modular filtering for argument: mysql-community-server

问题场景&#xff1a;在尝试使用docker安装自定义centos环境时&#xff0c;使用dockfile文件创建镜像容器&#xff0c;在centos7镜像中使用yum安装mysql5.7。 在安装过程中报错&#xff1a;All matches were filtered out by modular filtering for argument: mysql-community…

论文笔记:Collaborative Filtering Recommender Systems

学习随笔&#xff0c;仅记录值得留意的点。 协同过滤的适用领域 PS&#xff1a;适用协同过滤的场景并不一定完全符合下述要求&#xff0c;只是如果下述条件符合会更适合使用CF 数据要求 1、item数量足够多 2、每个item有足够多的评分 3、每个用户对较多数量的item给出了评…

【科研导向】Neural Collaborative Filtering 神经协同过滤 <论文理解代码分析>

Neural Collaborative Filtering——WWW17 文章简介一.摘要解析二.技术要点三.实验部分 代码解析一.模型构建二.难点问题 未来展望 文章简介 该文由何向南教授团队于17年发表在IW3C2&#xff0c;其核心思想在于结合了传统矩阵分解的易用性与神经网络对用户项目交互的高维感知力…

Maven Filtering和Profile

Filtering Filtering是resource插件的功能&#xff0c;作用是将资源文件中的占位符替换成对应的值&#xff0c;如下图所示&#xff1a; 使用注意 启用resource插件的filtering功能&#xff1b;设定资源文件的路径、过滤条件和编码等等&#xff1b;设定属性文件来源&#xf…

Particle Filtering粒子滤波

粒子滤波理论 本文由最基础的贝叶斯估计开始介绍&#xff0c;再引出蒙特卡罗采样&#xff0c;重要性采样&#xff0c;SIS粒子滤波&#xff0c;重采样&#xff0c;基本粒子滤波Generic Particle Filter&#xff0c;SIR粒子滤波&#xff0c;这些概念的引进&#xff0c;都是为了解…

Deep Frequency Filtering for Domain Generalization论文阅读笔记

这是CVPR2023的一篇论文&#xff0c;讲的是在频域做domain generalization&#xff0c;找到频域中generalizable的分量enhance它&#xff0c;suppress那些影响generalization的分量 DG是一个研究模型泛化性的领域&#xff0c;尝试通过各自方法使得模型在未见过的测试集上有良好…

读Multiscale Vessel Enhancement Filtering笔记

1.Introduction 通常对CTA和MRA的血管成像方法中&#xff0c;可视化3维血管结构的方法是MIP。但是MIP的缺点是会将非血管结构展现出来并且对于对比度比较低的小血管展现不太好。这也正是TOF-MRA的缺点。 这篇论文的目的是为了增强血管结构&#xff0c;最终达到血管分割的目的。…

Maven Resources Plugin的Filtering功能的Bug

Maven Resources Plugin的Filtering功能是非常强大的&#xff0c;是构建中非常重要的一项必备特性&#xff0c;但是最近发现了Filtering在过滤复杂文本&#xff08;例如Shell脚本&#xff09;时&#xff0c;会有一些问题&#xff0c;简单记录一下。以下是一段Shell脚本&#xf…

Neural Collaborative Filtering

目录 2 PRELIMINARIES3. NEURAL COLLABORATIVE FILTERING3.1 通用框架3.2 广义矩阵分解(GMF)3.3 MLP3.4 GMF和MLP的聚合—NeuMF 4 EXPERIMENTSQ1 NCF的效果比其他SOTA的隐式CF好吗&#xff1f;Q2 带有负采样的log loss&#xff08;这个优化框架&#xff09;是否适用于RS&#x…

图像处理中滤波(filtering)与卷积(convolution)的区别

图像处理中滤波和卷积是常用到的操作。很多人认为卷积就是滤波&#xff0c;两者并无区别&#xff0c;其实不然。两者在原理上相似&#xff0c;但是在实现的细节上存在一些区别。这篇博文主要叙述这两者之间的区别。 1、滤波&#xff08;或者叫相关&#xff09; 简单来说&#…

MAVEN中filtering的作用是什么?

FILTERING的作用 MAVEN提供了一种过滤机制&#xff0c;这种机制能够在资源文件被复制到目标目录的同时&#xff0c;当filtering true时替换资源文件中的占位符&#xff1b;当filtering false时不进行占位符的替换。 写在前面 如下所示filtering的用法&#xff0c;它对资源…

在Navicat premium上实现两个数据库同步

问题&#xff1a;有两个数据库A和B,现需要将数据库A的数据同步到数据库B上。 法一&#xff1a;使用备份 首先在数据库A上生成备份 然后将数据库A的备份拷贝到存储数据库B的备份的文件夹下&#xff0c;然后点击还原备份 方法二:使用工具中的同步操作 点击工具->结构同步 选…

Otter实现数据库同步

Otter工作原理 原理描述: 基于Canal开源产品,获取数据库增量日志数据。典型管理系统架构,manager(web管理)+node(工作节点) a. manager运行时推送同步配置到node节点 b. node节点将同步状态反馈到manager上基于zookeeper,解决分布式状态调度的,允许多node节点之间协同工作…

【愚公系列】2022年12月 数据库-关系数据库同步框架Dotmim.Sync的使用

文章目录 前言1.移动智能的三种模式2.混合模式模式的瓶颈3.数据同步的解决方案 一、关系数据库同步框架Dotmim.Sync的使用1.包介绍2.SqlServer到Sqlite同步测试基本使用3.SqlServer到Sqlite同步测试Web API代理3.1 服务端设置SqlServer同步服务3.2 客户端设置SqlLite同步服务3.…

django mysql数据同步_[django自动同步数据库]Django数据库同步操作技巧详解

同步数据库&#xff1a; 使用上述两条命令同步数据库 1.认识migrations目录&#xff1a; migrations目录作用&#xff1a;用来存放通过makemigrations命令生成的数据库脚本&#xff0c;里面的生成的脚本不要轻易修改。 要正常的使用数据库同步的功能&#xff0c;app目录下必须要…

SQLSERVER数据库同步

SQLSERVER数据库数据同步 1、实现方法2、实现发布3、实现订阅 1、实现方法 使用的是SQL自带的发布与订阅功能&#xff0c;SQL Server版本是2008&#xff0c;一台发布&#xff0c;一台订阅&#xff0c;实现数据库的数据同步。 2、实现发布 打开复制&#xff0c;右击本地发布&…