/* C3DArray.cpp-------------------------源文件
功能:动态三维数组的创建,用于模拟FDTD的三维空间对象坐标值
日期:2013年3月13日
作者:Yufeng Yang
*/
#include"C3DArray.h"
#include<iostream.h>
C3DArray::C3DArray(unsigned int i,unsigned int j,unsigned int k,double d) //构建三维空间的对象,并将其初始化为0
{
x=i;
y=j;
z=k;
p_array=new double **[x];
for(i=0;i<x;i++)
{
p_array[i]=new double*[y];
for(j=0;j<y;j++)
p_array[i][j]=new double[z];
}
for(i=0;i<x;i++)
for(j=0;j<y;j++)
for(k=0;k<z;k++)
p_array[i][j][k]=d;
}
C3DArray::C3DArray(const C3DArray & ar) //构建显式的复制构造函数,以进行深度复制(特用于类中包含了使用new初始化的指针成员)
{
x=ar.x;
y=ar.y;
z=ar.z;
p_array=new double **[x];
for(unsigned int i=0;i<x;i++)
{
p_array[i]=new double*[y];
for(unsigned int j=0;j<y;j++)
p_array[i][j]=new double[z];
}
for(i=0;i<x;i++)
for(unsigned int j=0;j<y;j++)
for(unsigned int k=0;k<z;k++)
p_array[i][j][k]=ar.p_array[i][j][k];
}
C3DArray::~C3DArray() //三维空间的析构函数,用于释放对象内存
{
for(unsigned int i=0;i<x;i++)
{ for(unsigned int j=0;j<y;j++)
delete [] p_array[i][j];
delete [] p_array[i];
}
delete[] p_array;
}
C3DArray & C3DArray::operator=(const C3DArray & ar) //重载赋值运算符,完成空间对象之间的赋值运算
{
if(this==&ar) //判断是否给自己赋值,如果是,则直接返回
return *this;
x=ar.x;
y=ar.y;
z=ar.z;
for(unsigned int i=0;i<ar.x;i++)
for(unsigned int j=0;j<ar.y;j++)
for(unsigned int k=0;k<ar.z;k++)
p_array[i][j][k]=ar.p_array[i][j][k];
return *this;
}
C3DArray & C3DArray::operator=(const double d) //重载赋值运算符,完成一个数对三维空间的赋值
{
for(unsigned int i=0;i<x;i++)
for(unsigned int j=0;j<y;j++)
for(unsigned int k=0;k<z;k++)
p_array[i][j][k]=d;
return *this;
}
C3DArray C3DArray::operator+(const C3DArray & ar) //重载加法运算符,得到两个三维空间对应各点之和的三维空间对象
{
C3DArray ar1(ar.x,ar.y,ar.z);
for(unsigned int i=0;i<ar.x;i++)
for(unsigned int j=0;j<ar.y;j++)
for(unsigned int k=0;k<ar.z;k++)
ar1.p_array[i][j][k]=p_array[i][j][k]+ar.p_array[i][j][k];
return ar1;
}
C3DArray C3DArray::operator-(const C3DArray & ar) //重载加法运算符,得到两个三维空间对应各点之差的三维空间对象
{
C3DArray ar1(ar.x,ar.y,ar.z);
for(unsigned int i=0;i<ar.x;i++)
for(unsigned int j=0;j<ar.y;j++)
for(unsigned int k=0;k<ar.z;k++)
ar1.p_array[i][j][k]=p_array[i][j][k]-ar.p_array[i][j][k];
return ar1;
}
C3DArray C3DArray::operator*(const C3DArray & ar) //重载乘法运算符,得到两个三维空间对应各点之积的三维空间对象
{
C3DArray ar1(ar.x,ar.y,ar.z);
for(unsigned int i=0;i<ar.x;i++)
for(unsigned int j=0;j<ar.y;j++)
for(unsigned int k=0;k<ar.z;k++)
ar1.p_array[i][j][k]=p_array[i][j][k]*ar.p_array[i][j][k];
return ar1;
}
没有合适的资源?快使用搜索试试~ 我知道了~
C++实现三维动态数组,赋值加减乘算法
共17个文件
obj:3个
pdb:2个
cpp:2个
4星 · 超过85%的资源 需积分: 49 48 下载量 26 浏览量
2013-03-19
12:50:03
上传
评论
收藏 335KB ZIP 举报
温馨提示
C++实现三维动态数组,赋值,加减乘算法,适用于三维空间对象之间的运算实现。
资源推荐
资源详情
资源评论
收起资源包目录
3DArray.zip (17个子文件)
3DArray
3DArray.ncb 57KB
3DArray.dsw 539B
test.cpp 473B
Debug
vc60.pdb 92KB
3DArray.exe 224KB
3DArray.obj 3KB
test.obj 28KB
3DArray.pdb 529KB
vc60.idb 81KB
C3DArray.obj 13KB
3DArray.pch 241KB
3DArray.ilk 255KB
C3DArray.h 1KB
3DArray.dsp 4KB
3DArray.plg 1KB
3DArray.opt 53KB
C3DArray.cpp 3KB
共 17 条
- 1
资源评论
- pastelchenv2014-10-07这个可以参考,
- 璐飛2013-10-16有用,谢谢
- qq_288876912015-11-09程序有点简单。
- p0mz6662013-03-19只看了源代码,应该没问题
卧浪居士
- 粉丝: 54
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功