2DArray

原创 2012年03月25日 22:15:52
#pragma once

#include <Windows.h>
#include <iostream>
using namespace std;

template<class DataType>

class CMy2DArray
{
public:
	CMy2DArray(int iWidth,int iHeight);
	virtual ~CMy2DArray(void);
	int Size();
	int Width();
	int Height();
	void ReSize(int iWidth,int iHeight);
	DataType& Get(int iWidth,int iHeight);
	void Show();
private:
	DataType* m_pArray;
	int m_iWidth;
	int m_iHeight;
};

template<class DataType>
CMy2DArray<DataType>::CMy2DArray(int iWidth,int iHeight)
{
	m_pArray=new DataType[iWidth*iHeight];
	m_iWidth=iWidth;
	m_iHeight=iHeight;
}

template<class DataType>
CMy2DArray<DataType>::~CMy2DArray(void)
{
	if (NULL!=m_pArray)
	{
		delete[] m_pArray;
		m_pArray=NULL;
	}
}

template<class DataType>
int CMy2DArray<DataType>::Size()
{
	return m_iWidth*m_iHeight;
}

template<class DataType>
int CMy2DArray<DataType>::Width()
{
	return m_iWidth;
}

template<class DataType>
int CMy2DArray<DataType>::Height()
{
	return m_iHeight;
}

template<class DataType>
DataType& CMy2DArray<DataType>::Get(int iWidth,int iHeight)
{
	return *(m_pArray+iHeight*m_iWidth+iWidth);
}

template<class DataType>
void CMy2DArray<DataType>::ReSize(int iWidth,int iHeight)
{
	DataType* pNewArray=new DataType[iWidth*iHeight];

	int minWidth=(iWidth<m_iWidth?iWidth:m_iWidth);
	int minHeight=(iHeight<m_iHeight?iHeight:m_iHeight);

	for (int h=0;h<minHeight;h++)
	{
		for (int w=0;w<minWidth;w++)
		{
			pNewArray[h*iWidth+w]=m_pArray[h*m_iWidth+w];
		}
	}
	if (NULL!=m_pArray)
	{
		delete[] m_pArray;
		m_pArray=NULL;
	}
	m_pArray=pNewArray;
	m_iWidth=iWidth;
	m_iHeight=iHeight;
}

template<class DataType>
void CMy2DArray<DataType>::Show()
{
	for (int h=0;h<m_iHeight;h++)
	{
		for (int w=0;w<m_iWidth;w++)
		{
			cout<<m_pArray[h*m_iWidth+w]<<" ";
		}
		cout<<endl;
	}
}

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Unity Shader Example 26 (Texture2DArray)

Shader "Unlit/Test" { Properties { _texArr ("Tex", 2DArray) = "" {} } SubShader...

Struts2项目实战 微云盘(一):项目分析

一、项目简述 进入github下载本项目(开源) 点击这里下载完整源码压缩包(1币) 这是一个模仿网盘的项目,主要是为了熟悉Struts2框架,该项目不涉及底层DAO操作,只涉及到Struts2...

ELK之logstath的使用(2)----多行日志input插件的使用

如何使用logstath进行日志多行合并采集

考研英语真题 阅读理解翻译及笔记——1994/section 2/text3

[注]加粗单词是不认识、不熟悉的单词;划掉汉字是翻译不准确的地方;加粗汉字是书上的翻译;[这里的内容是一些语法解释]; text 3 Exceptional children are ...

python与数据挖掘-笔记2

1,python的数据结构可以分为三种类型:标量(scaler),序列(sequence),映射(mapping) 1.1,序列:python中最为基础的内建类型,分为七种类型:列表,字符串,元组,U...

Debian&Ubuntu安装apache2

Debian&Ubuntu安装apache2 先更新一下 apt-get update 查看可安装软件列表(后面加上grep,可以使用正则) apt-cache search apach |g...

剑指offer-面试题2 实现单例模式

我也不知道面试题1去哪儿了。。面试题2.实现单例模式1. 单例模式的定义  单例模式是一种常用的软件设计模式。通过单例模式可以保证系统中只有类的实例的唯一性。单例模式最初的定义出现于《设计模式》(艾迪...

使用H2O进行集成学习

使用H2O进行集成学习介绍集成学习就是组合多个机器学习算法,从而得到更好的预测性能。许多流行的现代机器学习算法实际上就是集成。比如说随机森林 和 Gradient Boosting Machine (...

Codeforces Round #395 (Div. 2)E: Timofey and remoduling(数学+数论)

E. Timofey and remodulingtime limit per test:2 secondsmemory limit per test:256 megabytesinput:stand...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)