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

📄 vector.h

📁 数据结构常用算法——向量的加减乘除算法。希望能给读者带来帮助
💻 H
字号:
#include"assert.h"
template<class T>
class Vector
{
	public:
		Vector(unsigned);
		Vector(unsigned,T);
		Vector(const Vector<T> &);
		virtual ~Vector();
		T & operator[](unsigned);
		Vector<T> & operator=(const Vector<T> &);
		Vector<T>   operator+(const Vector<T> &);
 		Vector<T>   operator-(const Vector<T> &);
        int operator *(const Vector<T> &);    
		//friend ostream & operator <<(ostream & out,Vector<T>&);
		unsigned length() const;
		unsigned setSize(unsigned);
		unsigned setSize(unsigned,T);
	protected:
		T * data;
		unsigned size;
};

template<class T>Vector<T>::Vector(unsigned num):size(num)
{
	data=new T[size];
	assert(data!=0);
}

template<class T>Vector<T>::Vector(unsigned num,T v):size(num)
{
	data=new T[size];
	assert(data!=0);
	for(int i=0;i<size;i++)
		data[i]=v;
}

template<class T>Vector<T>::Vector(const Vector<T> & v)
{
	size=v.size;
	data=new T[size];
	for(unsigned i=0;i<size;i++)
		data[i]=v.data[i];
}

template<class T>Vector<T>::~Vector()
{
	delete[]data;
}

template<class T>
T & Vector<T>::operator[](unsigned u)
{
	return data[u];
}
template<class T>
Vector<T>& Vector<T>::operator=(const Vector<T> & v)
{
	if(size!=v.size)
	{
		T * np=new T[v.size];
	    assert(np!=0);
	    delete[]data;
    	size=v.size;
	    data=np;
	}
	for(unsigned i=0;i<size;i++)
		data[i]=v.data[i];
	return *this;
}
template<class T>Vector<T> Vector<T>::operator+(const Vector<T> & v)
{
	Vector<T> d(v.size);
	for(unsigned i=0;i<v.size;i++)
		d.data[i]=data[i]+v.data[i];
	return d;
}
template<class T>Vector<T> Vector<T>::operator-(const Vector<T> & v)
{
	Vector<T> d(v.size);
	for(unsigned i=0;i<v.size;i++)
		d.data[i]=data[i]-v.data[i];
	return d;
}
template<class T>int Vector<T>::operator*(const Vector<T> & v)
{
	int a=0;
	for(unsigned i=0;i<v.size;i++)
		a+=(v.data[i]*data[i]);
	return a;
}




template<class T>unsigned Vector<T>::setSize(unsigned u)
{
	if(size!=u)
	{
		T *np=new T[u];
		assert(np!=0);
		unsigned n=u<=size?u:size;
		for(int i=0;i<n;i++)
			np[i]=data[i];
		delete[]data;
		size=u;
		data=np;
	}
	return size;
}

⌨️ 快捷键说明

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