C++动态生成二维和三维数组

C++与OpenGL实现GIS三维管线可视化:架构、优化与实战 三维可视化是地理信息系统(GIS)领域的关键技术,它通过将二维空间数据扩展至三维,直观呈现复杂的地理要素及其空间关系。其核心原理在于利用计算机图形学,将带有高程信息的几何数据通过渲染管线转化为屏幕上的立体图像。这项技术的价值在于突破了传统二维地图的平面局限,为城市规划、地下管网管理等场景提供了精准的空间分析能力。本文聚焦于三维管线可视化这一具体应用,深入探讨了如何运用C++与OpenGL这一经典技术栈,构建高性能、可交互的三维管线系统。文中详细剖析了海量管线数据的组织与渲染优化策略,并针对三维交互与精准拾取 阅读详情

最近在编写一些C++小程序的时候用到二维和三维数组,看了很多博客关于动态生成二维和三维数组的方法,写的非常好,但是一大串的for循环还是不想写,为了偷下懒给自己写几个函数留着以后写其他程序的时候直接用。今天看书的时候看到了C++的类模板,正好借这个编一个函数生成二维和三维数组。

#include <iostream>
using namespace std;

template <class T>          
T ** c2arr(T **p,int m,int n){
	p=new T *[m];
	for (int i=0;i<m;i++){
	p[i]=new T[n];
	}
	
	for (int i=0;i<m;i++)
	{
		for(int j=0;j<n;j++){
			cin>>p[i][j];	
		}
	}
	return p;
}
//类模板用来创建不同类型的二位数组;

template <class T>          
void output2(T **p,int m,int n){
	
	for (int i=0;i<m;i++)
		{
			for(int j=0;j<n;j++){				
				cout<<p[i][j]<<" ";				
			}
			cout<<endl;
		}
	
}
// 输出二维数组 
 
int main(int argc, char** argv) {
	int m,n;
	cout<<"please input the number m,n"<<endl;
	cin>>m>>n;
	int **p;	

	p=c2arr(p,m,n);	
	output2(p,m,n); 
	return 0;
}

先编一个二维的输入和输出函数,用的时候直接使用 c2arr(p,m,n) 就生成一个m行n列的二维数组。

网上已经有很多自己写的三维向量类的文章,他们大都写了很多功能,而且写的也都很漂亮。我属于小白类型,就自己给自己写个简单的,只有输入和输出功能的类吧。

typedef   vector< vector < vector <int> > >   vector3;

class vector3d
{
public:
	vector3d(int m1, int n1, int k1) {
		creat3(m1, n1, k1);
		m = m1;
		n = n1;
		k = k1;
	};
	void creat3(int m1, int n1, int k1)
	{

		vector3 p(m1, vector< vector <int> >(n1, vector<int>(k1)));
		a = p;
		for (int i = 0; i<m1; i++)
		{
			for (int j = 0; j<n1; j++)
			{
				for (int k = 0; k<k1; k++)
				{
					a[i][j][k] = 0;
				}
			}
		}
	}
	void input() {
		for (int i = 0; i<m; i++)
		{
			for (int j = 0; j<n; j++)
			{
				for (int k = 0; k<n; k++)
				{
					cin >> a[i][j][k];
				}
			}
		}
	}
	void output() {
		for (int i = 0; i<m; i++)
		{
			for (int j = 0; j<n; j++)
			{
				for (int l = 0; l<k; l++)
				{
					cout << a[i][j][l] << " ";
				}
				cout << endl;
			}
			cout << endl;

		}
	}
private:
	int m, n, k;
	vector3 a;

};

 

另外,附上其他博主的文章https://blog.youkuaiyun.com/hw140701/article/details/52298288

深入C6678启动流程:从BootRom参数表到多核镜像部署的完整解析 本文深入解析TMS320C6678 DSP的启动流程,从BootRom参数表到多核镜像部署的全过程。详细介绍了七种启动模式的工程选择、多核镜像构建技巧以及二级引导策略,帮助开发者掌握C6678的启动机制与调试方法,提升嵌入式系统开发效率。 阅读详情

相关推荐

置换矩阵、转置矩阵以及向量空间、子空间

置换矩阵、转置矩阵以及向量空间、子空间导读置换矩阵 导读 MIT矩阵分析课程之后的的二篇笔记。

qq_44677482的博客 1672

C++随机生成二维数组

这个是使用C++实现随机生成二维数组。希望可以帮到需要的人。#include #include #include using namespace std; int main(){ int n,m; cin >> n >> m; srand((unsigned)time(NULL)); for(int i = 0; i < n;i++ ){ for(int i =

u012585224的专栏 9990

Windows 11安装 SQLServer 2008 R2 失败问题处理

Windows 11安装SQL Server 2008 R2失败解决方案 由于Windows 11移除了对PowerShell 2.0的支持,导致SQL Server 2008 R2安装失败。经过多次尝试,最终通过**方案六(修改注册表模拟PowerShell 2.0环境)**成功安装。其他可行方案包括: 使用SP3集成版安装包 通过命令行跳过检查(/SUPPRESSPOWERShellCHECK参数) 创建特殊配置文件 替代方案建议: 使用Docker容器运行 在虚拟机中安装 升级到新版SQL Serve

oDengWei的博客 7146

c++2维动态数组的声明

1 一维动态数组的声明

fengzijia的专栏 788

FAGLB03余额显示异常排查与修复指南

本文针对SAP新总账中FAGLB03报表余额显示异常问题,提供了专业的排查与修复指南。文章深入剖析了数据不一致的核心原因,如FAGLFLEXT汇总表与凭证明细不同步、年度余额结转(FAGLGVTR)失败等,并详细介绍了使用FAGLF03进行精准诊断、通过SE38执行标准调整程序TFC_ADJUST_VZ进行修复的标准操作流程,帮助用户快速恢复数据一致性,确保财务报表的准确性。

weixin_29313423的博客 307

Jupyter实战:解决ModuleNotFoundError之xgboost缺失问题

本文详细解析了在Jupyter Notebook中遇到ModuleNotFoundError: No module named 'xgboost'错误的完整解决方案。通过诊断环境、使用pip正确安装xgboost、配置Python路径以及最终验证,帮助用户彻底解决模块缺失问题,并理解Jupyter内核与Python环境的关系,提升问题排查能力。

weixin_29064103的博客 384

C++实现随机产生一个二维数组

#include &lt;iostream&gt; #include &lt;stdlib.h&gt; #include &lt;time.h&gt; using namespace std; int main() { int n, m; //行数n和列数m cin &gt;&gt; n &gt;&gt; m...

ds19991999的博客 2万+

基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试(第一篇)安装调试

基于Ardupilot/PX4固件,APM/PIXhawk硬件的VTOL垂直起降固定翼调试 本文内容大部分来自Kris,我们的K大,在VTOL领域的大牛,在此,非常感谢K大。能引用K大的成果也是自己的荣幸,不便之处还请K大多多包涵,在此引用只是为方便自己日常学习,部分参数表里根据自身情况,增加了相应参数。 1.安装及下载Ardupilot官方固件: VTOL固件的来源可分为Ardupilot官方固...

u011322358的博客 3万+

C++中创建二维数组的几种方法

c++

u011555996的博客 4304

群晖Video Station海报墙插件更新了!手把手教你用c5h12o5插件搞定豆瓣/TMDB搜刮

本文详细介绍了如何使用c5h12o5插件为群晖Video Station配置高效的海报墙系统。该插件支持豆瓣、TMDB等多数据源并行搜刮,智能优先级设置和本地化优化,解决TMDB API失效问题,提升影视库管理体验。包含安装教程、配置策略和高级使用技巧,适合影视爱好者优化NAS媒体库。

weixin_29250403的博客 263

CAN总线入门(硬件部分)

这篇博客讲述CAN总线入门知识。

记得诚 1万+

c++创建二维数组的几种办法

方法一: #include <iostream> #include <vector> using namespace std; void test01() { //创建一个外层容器 vector<vector<int>>v; //创建一些内层容器,并赋值 vector<int>v1(10,1); vector<int>v2(10,2); vector<int>v3(10,3); //将

admin的博客 1万+

20-CUDA规约算法:并行求和优化策略-✨

本文介绍了GPU上高效并行规约(Reduction)算法的优化技巧。规约是将大量数据合并为单个值的基础计算模式,广泛应用于科学计算等领域。文章从基础并行规约实现出发,逐步讲解了三种关键优化策略:1)交错寻址减少共享内存bank冲突;2)循环展开降低分支预测开销;3)多级规约处理大规模数据。性能对比显示,优化策略可带来最高4.5倍的加速效果。最后总结了最佳实践,包括合理使用共享内存、循环展开和warp级优化等技巧。这些优化方法可显著提升GPU计算密集型应用的性能。

2301_79143213的博客 171

C++编程 --【 动态生成三维数组 】

动态生成三维数组

qq_64154142的博客 839

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

C++ 动态生成三维数组和其含义

1.先定义个指针变量  int ***arr; 2.new 一个以为指针数组,并将arr指向他,作为数组的行 arr = new int**[5]; 这句话是什么意思,他的意思是arr 指向了一个一维数组,这个一维数组就可以理解为多维数组里面的行,  那为什么int 后面带两个星星.他的意思是,这个一维数组里面存的还是指针,而且是二级指针; 3.为每一行都生成列 for (int ...

Adecimal的博客 1241

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

如何在VC中创建动态数组

怎样给多维数组动态分配内存//Allocate:int **p = new int* [m];for(int i = 0 ; i p[i] = new int[n];//Use:for(int i = 0 ; i for(int j = 0 ; j p[i][j] = i * j;//Free:for(int i = 0 ; i delete[] p[i];delete[] p;1. 演示形为in

pkeel的专栏 3809

C++ 指向动态分配的指针数组的指针

首先介绍指向数组的指针:   char *p = new char; 定义指向动态分配的字符变量的指针;   char *p = new char[3]; 定义指向动态分配的一维字符数组的指针,p指向数组首个元素的地址,即(p+1)为数组第二个元素的地址;   char (*p)[3] = new char[2][3]; 定义指向动态分配的二维字符数组(三行)的指针,p指向数组首行的地址,即(p+...

Spr Chan的博客 8488

基于OpenGL的三维地形的构建

(1)地形高程的随机生成 (2)地形平滑技术 (3)根据高程确定地形的颜色 (4)地形的动态生成 (5)地形的绘制

qq_46029700的博客 8560

C++动态生成一维数组和二维数组实例

#include using namespace std; #define D_AF 0.85; //衰减因子 #define END 0.0000000001 //结束条件 int main(){ int pageNum,count; cout>pageNum>>count; //为PageRank赋初值 double *pageRank; pageRank = new double[pageNum]; for(int i=0; i

TJT999 2584

<代码收藏>动态生成数组

#include #include #include using namespace std; void oneArray() { int size=rand()%10; int* pint=new int[size]; for(int i=0;i<size;++i) { pint[i]=rand()%1

卡尔 2717

C++ 动态申请数组

方法1、C++使用vector方便生成:  #include &lt;iostream&gt; #include &lt;vector&gt; #include &lt;iomanip&gt; using namespace std; int main() { int i, j, m, //行数 n; //列数 cout &lt;&lt;...

qimo601的专栏 1351

c++动态生成数组大小_C++/MATLAB 联合编程:C++中调用MATLAB编译出来的动态库

目录前言mwArrayBrief构造函数成员方法C++ 调用 MATLAB 实例前期准备无返回值有返回值注意事项前言之前我写过一篇 MATLAB与C语言的混合编程,那个是用 mex 命令 来编译 .C 文件 生成 .mexw64 文件来给 MATLAB 调用。注意啊,是在 MATLAB中 调用 C函数。现在,在这偏推送里讲的是:在 C++中 调用 MATLAB函数 !其实,我之前也没怎么...

weixin_39992957的博客 494

new动态创建数组?(new创建多维数组)

在使用数组时我们难免会感觉数组的灵活性太低,所以new成了我们使用频率很高的一个操作符。 int p[2]={4,4}; int p2[2][2]={{4,4},{4,4}}; int p3[2][2][2]{{{4,4},{4,4}},{{4,4},{4,4}}}; 这是最常规的操作。 接下来上new的用法: //new的第一种用法: int *p=new int[5]; int (*p2)[4]=new int[5][4]; int (*p3)[4][3]=new int[5][4][3]; int

qq_45748895的博客 2683

UE5动态生成3DTiles:从实时数据到三维可视化的完整实现方案

3D Tiles作为一种开放的三维地理空间数据标准,其核心原理在于通过层次细节(LOD)和空间索引技术,将大规模三维场景组织成可流式传输的瓦片树结构,从而在Web和游戏引擎中实现高效渲染。这项技术的工程价值在于解决了海量三维模型在网络传输与实时渲染时的性能瓶颈,使其广泛应用于数字孪生、智慧城市和地理信息系统等领域。在实际应用中,开发者常面临静态预烘焙数据无法满足实时性需求的挑战,例如需要融合物联网传感器点位或无人机巡检的倾斜摄影模型等动态数据源。本文聚焦于**动态生成3DTiles**与**CesiumFo

weixin_33957648的博客 497

如何创建动态的多维数组且内存空间连续

大部分同学都会创建一位数组,并且一位数组以创建好内存空间就是连续的。但常常也会要用到创建多维连续空间的数组,下面以二三维为例子,大家看了就明白。这就是数组指针与指针数组的灵活应用。(这里说的创建都是指动态创建)   template &lt;typename T&gt; T **CreateDoubleArray(int m,int n)//m为高度,n为每行的长度 { T **cp ...

weixin_34121304的博客 174
上一篇: ACM调试 避免数据的重复输入
下一篇: C/C++ 保留N位小数
hacker_G
博客等级 码龄9年 75粉丝 60原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值