⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 矩阵与向量.h

📁 在c++矩阵和向量的运用
💻 H
字号:

Vector::Vector(int s)
{
	if(s<=0)
	{
		cerr<<"bas Vector size."<<endl;
		exit(1);
	}
	sz=s;
	v=new int[s];
}
int & Vector::Elem(int i)
{
	if(i<0||sz<=i)
	{
		cerr<<"Vector index out of range."<<endl;
		exit(1);
	}
	return v[i];
}
Vector::Vector(Vector & vec)
{
	v=new int[sz=vec.sz];
	memcpy((void*)v,(void*)vec.v,sz*sizeof(int));
}
void Vector::Display()
{
	for(int i=0;i<sz;i++)
		cout<<v[i]<<" ";
	cout<<endl;
}
class Matrix
{
	friend Vector Multiply(Matrix &m,Vector &v);
public:
	Matrix(int,int);
	Matrix(Matrix &);
	~Matrix(){delete[]m;}
	int & Elem(int,int);
protected:
	int *m;
	int szl;//行
	int szr;//列
};
Matrix::Matrix(int i,int j)
{
	if(i<=0||j<=0)
	{
		cerr<<"bad Matrix size."<<endl;
		exit(1);
	}
	szl=i;
	szr=j;
	m=new int[i*j];
}
Matrix::Matrix(Matrix& mat)
{
	szl=mat.szl;
	szr=mat.szr;
	m=new int[szl*szr];
	memcpy((void*)m,(void*)mat.m,szl*szr*sizeof(int));
}
int & Matrix::Elem(int i,int j)//引用返回的目的是返回值可以做左值
{
	if(i<0||szl<=i||j<0||szr<=j)
	{
		cerr<<"Matrix index out of range."<<endl;
		exit(1);
	}
	return m[i*szr+j];
}
Vector Multiply(Matrix &m,Vector &v)
{
 	if(m.szr!=v.sz)
	{
		cerr<<"bad multiply Matrix with Vector."<<endl;
		exit(1);
	}
	Vector r(m.szl);
	for(int i=0;i<m.szl;i++)
	{
		r.v[i]=0;
		for(int j=0;j<m.szr;j++)
			r.v[i]+=m.m[i*m.szr+j]*v.v[j];
	}
	return r;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -