亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? am.h

?? 數(shù)值處理算法程序
?? H
字號(hào):
/************************************************
 Simple&Easy!
 This header file are coded for the convenience of
 Array&Matrix operations.
 It contains two classes,namely Array & Matrix.
 Expect bugs!
 Please use and enjoy, and let me know of any bugs/mods/improvements 
 that you have found/implemented and I will fix/incorporate them into 
 this file.
 Written by hujinshan@2002.12.23 Airforce Engineering University.

************************************************/
/*** AM.h ***/
#ifndef AM_H_
#define AM_H_
#include <stdlib.h>
#include <time.h>
#include <string.h>

template <class T>
class Array
{
protected:
	T* pdata;
	unsigned int length;
public:
	Array();
	Array(unsigned int);
	Array(Array const&);

	virtual ~Array();

	void operator = (Array&);
	Array<T>& operator + (Array&);
	Array<T>& operator - (Array&);
	
	T const& operator [] (unsigned int)const;
	T& operator [](unsigned int);

	T const* GetData() const;
	unsigned int GetLenght();
	void SetLength(unsigned int,bool=true);

};
////////////////////////////////////////////////////////////
//缺省構(gòu)造函數(shù)
template <class T>
Array<T>::Array():pdata(new T[1]),length(1)
{
}
//數(shù)組構(gòu)造函數(shù)
template <class T>
Array<T>::Array(unsigned int n):pdata(new T[n]),length(n)
{
}
//拷貝構(gòu)造函數(shù)
template <class T>
Array<T>::Array(Array<T> const& array):pdata(new T[array.length]),length(array.length)
{
	for(unsigned int i=0;i<length;i++)
		pdata[i]=array.pdata[i];
}
//析構(gòu)函數(shù)
template <class T> Array<T>::~Array()
{
	delete []pdata;
}
//得到指向數(shù)組的指針變量
template <class T>T const* Array<T>::GetData()const
{
	return pdata;
}
//得到數(shù)組長(zhǎng)度
template <class T> unsigned int Array<T>::GetLenght()
{
	return length;
}
//重載操作符
template <class T>Array<T>& Array<T>::operator + (Array& array)
{
	if(array.length!=length)
		throw("Error: Array do not match !");
	for(unsigned int i=0;i<length;i++)
		pdata[i]+=array[i];
	return *this;
}
template <class T>Array<T>& Array<T>::operator - (Array& array)
{
	if(array.length!=length)
		throw("Error: Array do not match !");
	for(unsigned int i=0;i<length;i++)
		pdata[i]-=array[i];
	return *this;
}
template <class T> void Array<T>::operator = (Array& array)
{
	if(array.length!=length)
		throw;
	for(unsigned int i=0;i<length;i++)
		pdata[i]=array[i];
	return;
}
//下標(biāo)操作
template <class T> T const& Array<T>::operator[](unsigned int position)const
{
	if(position>=length)
		throw("Error: Array--Out_of_range!");
	return pdata[position];
}
template <class T> T& Array<T>::operator[](unsigned int position)
{
	if(position>=length)
		throw("Error: Array--Out_of_range!");
	return pdata[position];
}
//數(shù)組大小重新調(diào)整
template <class T> void Array<T>::SetLength(unsigned int newLength,bool bCopyData)
{
	T* const pnewData=new T[newLength];
	unsigned int const min=length<newLength?length:newLength;
	if(bCopyData)
		for(unsigned int i=0;i<min;i++)
			pnewData[i]=pdata[i];
	delete []pdata;
	pdata=pnewData;
	length=newLength;
}
//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//*//
class Matrix
{
protected:
	unsigned int numberOfRows;
	unsigned int numberOfColumns;
	Array<double> array;
public:
	class Row
	{
		Matrix& matrix;
		unsigned int const row;
	public:
		Row (Matrix& _matrix,unsigned int _row):matrix(_matrix),row(_row){}
		double& operator [](unsigned int column)const
		{return matrix.Select(row,column);}
	};

	Matrix(unsigned int, unsigned int);
	Matrix(Matrix& mat);
	Matrix();

	virtual ~Matrix();

	double& Select(unsigned int, unsigned int);
	Row operator[](unsigned int);

	Matrix operator + (Matrix& mat);
	Matrix operator - (Matrix& mat);
	Matrix operator * (Matrix& mat);
	bool operator == (Matrix& mat);

	Array<double>& GetData();
	unsigned int GetNumberOfRows();
	unsigned int GetNumberOfColumns();
	bool LoadFromArray(double [],unsigned int,unsigned int);
	bool LoadFromString(char*,char,char);
	bool ResetMatrix(unsigned int, unsigned int);
	bool ReverseMatrix();
	void ZeroMatrix();
	void RandomMatrix(int max);
};
//-----------------------------------------
//構(gòu)造函數(shù)
Matrix::Matrix(unsigned int rows,unsigned int cols):
numberOfRows(rows),numberOfColumns(cols),array(rows*cols)
{//ZeroMatrix();
}
//拷貝構(gòu)造函數(shù)
Matrix::Matrix(Matrix& mat):
	numberOfRows(mat.numberOfRows),numberOfColumns(mat.numberOfColumns),
		array(mat.numberOfRows*mat.numberOfColumns)
{*this=mat;
}
Matrix::Matrix():
	numberOfRows(1),numberOfColumns(1),
		array(1)
{//array[0]=0.0;
}
Matrix::~Matrix()
{
}
//重新調(diào)整矩陣大小
bool Matrix::ResetMatrix(unsigned int rows, unsigned int cols)
{
	try{	
		Matrix mat(*this);
		array.SetLength(rows*cols,false);
		if(numberOfRows<=rows&&numberOfColumns<=cols)
			for(unsigned int i=0;i<numberOfRows;i++)
			for(unsigned int j=0;j<numberOfColumns;j++)
				array[i*cols+j]=mat.Select(i,j);
		numberOfRows=rows;
		numberOfColumns=cols;//ZeroMatrix();
	}
	catch(...){return false;}
	return true;
}
//從數(shù)組導(dǎo)入數(shù)據(jù)
bool Matrix::LoadFromArray(double a[],unsigned int rows, unsigned int cols)
{
	if(!ResetMatrix(rows,cols))
		return false;
	for(unsigned int i=0;i<rows;i++)
			for(unsigned int j=0;j<cols;j++)
				Select(i,j)=a[i*numberOfColumns+j];
	return true;
}
//從字符串導(dǎo)入數(shù)據(jù)
bool Matrix::LoadFromString(char* str,char chSepOne=',',char chSepRow=';')
{
try{
	char buf[50];
	buf[0]='\0';
	if(chSepRow==chSepOne)
		throw("Sorry, the dividing symbols cannot be the same!");
	unsigned int i,j,nRows=0,nCols=0,nIndex=0;
	int pos,nTmp=-1;//pos為字符在字符串中的位置
	for(i=0;i<strlen(str);i++)
	{
		if((str[i]==chSepRow) || (i==strlen(str)-1))
		{
			nRows++;nCols++;
			if(nTmp==-1)
				nTmp=nCols;
			else if(nTmp!=nCols)
					throw("Sorry, the string is invalid!");
			if(i!=strlen(str)-1)
				nCols=0;
		}
		else if(str[i]==chSepOne)
				nCols++;
	}
	if(nTmp!=nCols)
		throw("Sorry, the string is invalid!");

	Array<double> arrayTmp(nRows*nCols);
	unsigned int iA=0;
	ResetMatrix(nRows,nCols);
	char ch[2];
	for(i=0;i<strlen(str);i++)
		if(str[i]==chSepRow)
		{
			for(j=nIndex;j<i;j++)
				ch[0]=str[j],ch[1]='\0',strcat(buf,ch);
			pos=strcspn(buf,&chSepOne);
			if(pos<strlen(buf))
				strncpy(buf+pos," ",1);
			pos=strcspn(buf,&chSepRow);
			if(pos<strlen(buf))
				strncpy(buf+pos," ",1);
			arrayTmp[iA]=atof(buf);
			iA++;
			nIndex=i;buf[0]='\0';
		}
		else
		{	
			if(i==strlen(str)-1)//last char is not chSepRow
			{
				
				for(j=nIndex;j<i+1;j++)
					ch[0]=str[j],ch[1]='\0',strcat(buf,ch);
				pos=strcspn(buf,&chSepOne);
				if(pos<strlen(buf))
					strncpy(buf+pos, " ",1);
				pos=strcspn(buf,&chSepRow);
				if(pos<strlen(buf))
					strncpy(buf+pos," ",1);
				arrayTmp[iA]=atof(buf);
				iA++;
				buf[0]='\0';
				nRows++;nIndex=i;
			}
			else if(str[i]==chSepOne)
			{
				for(j=nIndex;j<i;j++)
				ch[0]=str[j],ch[1]='\0',strcat(buf,ch);
				pos=strcspn(buf,&chSepOne);
				if(pos<strlen(buf))
					strncpy(buf+pos, " ",1);
				pos=strcspn(buf,&chSepRow);
				if(pos<strlen(buf))
					strncpy(buf+pos," ",1);
				arrayTmp[iA]=atof(buf);
				iA++;
				nIndex=i;buf[0]='\0';
			}
		}
	for(i=0;i<numberOfRows;i++)
		for(j=0;j<numberOfColumns;j++)
			Select(i,j)=arrayTmp[i*numberOfColumns+j];
}
catch(...)
	{throw("Sorry, cannot load matrix from string! ");}
	return true;
}
//選取元素
double& Matrix::Select(unsigned int i, unsigned int j)
{
	char ch[50];
	if(i>=numberOfRows)
	{	
		sprintf(ch,"Invalid row: %d",i);
		throw (ch);
	}
	if(j>=numberOfColumns)
	{
		sprintf(ch,"Invalid colum: %d",j);
		throw (ch);
	}
	return array[i*numberOfColumns+j];
}
Array<double>& Matrix::GetData()
{
	return array;
}
//得到行數(shù)
unsigned int Matrix::GetNumberOfRows()
{
	return numberOfRows;
}
//得到列數(shù)
unsigned int Matrix::GetNumberOfColumns()
{
	return numberOfColumns;
}
//下標(biāo)操作
Matrix::Row Matrix::operator [] (unsigned int row)//返回Row對(duì)象
{
	return Row(*this,row);
}
//重載操作符
Matrix Matrix::operator + (Matrix& mat)
{
	Matrix mt=*this;
	if( (numberOfRows!=mat.numberOfRows)||
		(mat.numberOfColumns!=numberOfColumns) )
		throw("The matrices are not match!");
	for(unsigned int i=0;i<numberOfRows;i++)
		for(unsigned int j=0;j<numberOfColumns;j++)
			mt[i][j]+=mat[i][j];
	return mt;
}
Matrix Matrix::operator - (Matrix& mat)
{
	Matrix mt=*this;
	if( (numberOfRows!=mat.numberOfRows)||
		(mat.numberOfColumns!=numberOfColumns) )
		throw("The matrices do not match!");
	for(unsigned int i=0;i<numberOfRows;i++)
		for(unsigned int j=0;j<numberOfColumns;j++)
			mt[i][j]-=mat[i][j];
	return 	mt;
}
Matrix Matrix::operator * (Matrix& mat)
{
	if(mat.numberOfRows!=numberOfColumns)
		throw("The matrices do not match!");
	Matrix matRet(numberOfRows,mat.numberOfColumns);
	unsigned int i,j,l;
	double tmp;
	for (i=0; i<numberOfRows; i++)
		for (j=0; j<mat.numberOfColumns; j++)
		{
			tmp=0.0;
			for (l=0; l<numberOfColumns; l++)
				tmp=tmp+array[i*numberOfColumns+l]*(mat.Select(l,j));
			matRet[i][j]=tmp;
		}
	return matRet;
}
bool Matrix::operator == (Matrix& mat)
{
	if( (numberOfRows!=mat.numberOfRows)||
		(mat.numberOfColumns!=numberOfColumns) )
		return false;
	for(unsigned int i=0;i<numberOfRows;i++)
		for(unsigned int j=0;j<numberOfColumns;j++)
			if(Select(i,j)!=mat[i][j])
				return false;
	return true;
}
//矩陣元素清零
void Matrix::ZeroMatrix()
{
	for(unsigned int i=0;i<numberOfRows;i++)
			for(unsigned int j=0;j<numberOfColumns;j++)
				Select(i,j)=0;
}
void Matrix::RandomMatrix(int max)
{
	srand( (unsigned)time( NULL ) );
	for(unsigned int i=0;i<numberOfRows;i++)
			for(unsigned int j=0;j<numberOfColumns;j++)
				Select(i,j)=rand()%max+1;
}
//實(shí)矩陣轉(zhuǎn)置
bool Matrix::ReverseMatrix()
{
	double tmp;
	try{
		if(numberOfRows!=numberOfColumns)
		{
			Array<double> tmpArray(array);
			ResetMatrix(numberOfColumns,numberOfRows);
			for(unsigned int i=0;i<numberOfRows;i++)
				for(unsigned int j=0;j<numberOfColumns;j++)
					array[i*numberOfColumns+j]=tmpArray[j*numberOfRows+i];
		}
		else
		{
			for(unsigned int i=0;i<numberOfRows;i++)
				for(unsigned int j=0;j<numberOfColumns;j++)
					if(i>j)
					{
						tmp=array[i*numberOfColumns+j];
						array[i*numberOfColumns+j]=array[j*numberOfColumns+i];
						array[j*numberOfColumns+i]=tmp;
					}
		}return true;
	}
	catch(...)
	{return false;}
}
//------------------------------------------------------
#endif
//end of file

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线视频中文字幕一区二区| 国产精品久久毛片| 欧美精选一区二区| 欧美在线观看视频一区二区三区| 成人免费不卡视频| 成人免费视频一区二区| 北岛玲一区二区三区四区| 成人性生交大合| 91在线观看高清| 91成人在线精品| 欧美日本在线看| 日韩欧美黄色影院| 国产亚洲精品aa| 国产精品女同互慰在线看| 中文字幕一区二区三区不卡| 亚洲图片欧美激情| 亚洲一级二级在线| 日本怡春院一区二区| 免费人成精品欧美精品| 国产美女久久久久| 成人动漫视频在线| 在线免费亚洲电影| 日韩限制级电影在线观看| www国产亚洲精品久久麻豆| 国产视频在线观看一区二区三区| 国产精品久线观看视频| 亚洲夂夂婷婷色拍ww47| 日本va欧美va瓶| 丰满白嫩尤物一区二区| 色妹子一区二区| 91精品欧美福利在线观看| 26uuu国产电影一区二区| 国产精品麻豆网站| 午夜精品视频一区| 国产精品一区2区| 97久久精品人人做人人爽50路| 色94色欧美sute亚洲线路一ni| 欧美精品一级二级| 国产校园另类小说区| 亚洲日本在线观看| 免费美女久久99| 成人精品国产一区二区4080| 欧美日韩精品欧美日韩精品| 亚洲精品视频一区二区| 亚洲国产人成综合网站| 国产伦理精品不卡| 欧美日韩一二区| 国产精品视频在线看| 亚洲国产精品天堂| 成人免费视频视频在线观看免费 | 久久国产婷婷国产香蕉| 岛国av在线一区| 91麻豆精品国产91久久久资源速度 | 午夜精品久久久久久久久久久| 九九热在线视频观看这里只有精品| 成+人+亚洲+综合天堂| 7777女厕盗摄久久久| 国产精品理伦片| 麻豆精品在线观看| 在线观看国产91| 欧美激情中文字幕一区二区| 日本不卡123| 日本道精品一区二区三区| 欧美精品一区二区三区一线天视频| 亚洲色图欧美激情| 国产九九视频一区二区三区| 欧美喷水一区二区| 亚洲特级片在线| 国产精品一区二区在线观看网站 | 中文在线一区二区| 日本乱码高清不卡字幕| 国产精品卡一卡二卡三| 国产综合色产在线精品| 91精品欧美久久久久久动漫| 一区二区三区四区不卡在线| 国产精品18久久久久久久久久久久| 欧美精品三级在线观看| 亚洲视频电影在线| 福利一区福利二区| 精品乱码亚洲一区二区不卡| 午夜久久久影院| 日本道免费精品一区二区三区| 日本一区二区免费在线观看视频| 久久精品噜噜噜成人av农村| 欧美日韩中字一区| 亚洲精品高清视频在线观看| 成人小视频免费在线观看| 精品少妇一区二区三区在线播放| 亚洲成在线观看| 欧美中文字幕一区二区三区| 亚洲美女免费在线| 暴力调教一区二区三区| 国产欧美精品一区二区色综合| 美国毛片一区二区三区| 欧美高清视频一二三区| 天堂av在线一区| 欧美日韩精品电影| 午夜久久久久久久久久一区二区| 欧美性猛交xxxx乱大交退制版| 亚洲人123区| 一本到高清视频免费精品| 亚洲精品中文在线影院| 色综合天天天天做夜夜夜夜做| 中文字幕欧美三区| 岛国精品在线观看| 国产精品女同互慰在线看| av电影在线观看不卡| 综合久久给合久久狠狠狠97色| 成人精品一区二区三区四区| 国产精品三级电影| 不卡高清视频专区| 亚洲人成网站色在线观看| 91国偷自产一区二区使用方法| 亚洲摸摸操操av| 在线观看日韩电影| 日韩综合在线视频| 欧美mv日韩mv| 国产ts人妖一区二区| 中文字幕av不卡| 色欧美88888久久久久久影院| 亚洲一区二区视频| 91精品久久久久久久91蜜桃| 麻豆精品在线播放| 国产视频视频一区| 91婷婷韩国欧美一区二区| 一二三区精品视频| 欧美一级欧美三级| 国产一区二区三区免费看| 欧美国产97人人爽人人喊| 色婷婷精品大在线视频| 亚洲chinese男男1069| 日韩视频一区在线观看| 国产精品资源在线看| 中文字幕在线一区| 欧美日韩在线播放三区| 蜜臀av在线播放一区二区三区| 久久久99免费| 91一区二区在线| 奇米888四色在线精品| 久久亚区不卡日本| 色综合天天在线| 久久精品噜噜噜成人av农村| 中文字幕亚洲电影| 欧美精品久久99久久在免费线| 国产一区二区三区日韩 | 91一区二区在线| 青草av.久久免费一区| 国产精品久久久久永久免费观看 | 一区二区三区视频在线看| 欧美一卡2卡三卡4卡5免费| 国产成人精品影院| 亚洲成av人片| 国产精品午夜在线| 欧美一区二区在线免费观看| 成人小视频免费在线观看| 日本亚洲一区二区| 自拍av一区二区三区| 精品成人在线观看| 欧美日韩一区二区在线观看视频| 国产sm精品调教视频网站| 午夜精品久久久久久久久久| 国产精品成人在线观看| 日韩久久久久久| 欧美午夜在线观看| www.欧美精品一二区| 久久99精品久久久久| 亚洲成a人片综合在线| 中文在线资源观看网站视频免费不卡| 欧美日韩大陆在线| 99久久精品国产毛片| 国内精品久久久久影院色| 亚洲高清免费视频| 自拍视频在线观看一区二区| 久久美女高清视频| 日韩一区二区在线看片| 欧美在线你懂得| 99re热视频精品| 高清在线不卡av| 国产精品主播直播| 精品亚洲国产成人av制服丝袜| 亚洲成人激情综合网| 亚洲色图在线播放| 国产精品卡一卡二| 国产日韩欧美亚洲| 欧美电影免费观看高清完整版在| 欧美日韩成人一区| 欧美写真视频网站| 色偷偷成人一区二区三区91| 成人网男人的天堂| 国产成人在线影院| 国产福利精品一区| 激情综合网av| 精品在线你懂的| 蜜桃视频第一区免费观看| 婷婷成人激情在线网| 一区二区免费看| 亚洲一本大道在线| 一区二区三区四区在线| 一区二区视频在线| 亚洲精品成人在线|