vector.h

来自「对8组包含不同个数据的向量进行排序」· C头文件 代码 · 共 95 行

H
95
字号
#include <iostream.h>
template <class T>class vector
{
	public:
		vector(unsigned numElements);
		vector(unsigned numElements,T initValue);
		vector(const vector<T>&source);
		virtual ~vector();
		T& operator[](unsigned index)const;
		vector<T>& operator=(const vector<T>&);
		unsigned length()const;
		unsigned setSize(unsigned numOfElements);
		unsigned setSize(unsigned numOfElements,T initValue);
	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>&s):size(s.size)
{
	data=new T[size];
	assert(data!=0);
	for(int i=0;i<size;i++)
		data[i]=s.data[i];
}
template<class T>vector<T>:: ~vector()
{
	delete[]data;
	data=0;
	size=0;
}
template <class T>T& vector<T>::operator [](unsigned index)const
{
	assert(index<size);
	return data[index];
}
template<class T> unsigned vector<T>:: length()const
{
	return size;
}
template<class T>unsigned vector<T>::setSize (unsigned num)
{
	if(size!=num)
	{
		T *np=new T[num];
		unsigned n=num<size ?num:size;
		for(int i=0;i<n;i++)
			np[i]=data[i];
		delete []data;
		size =num;
		data=np;
	}
	return size;
}
template<class T>unsigned vector<T>::setSize(unsigned num,T initValue)
{
	if(size!=num)
	{
		T * np=new T[num];
		unsigned n=num<size ?num:size;
		for(unsigned i=0;i<n;i++)
			np[i]=initValue;
		delete []data;
		size =num;
		data=np;
	}

	return size;

}
template <class T>vector<T>&vector<T>::operator = (const vector<T>&right)
{
	if(size !=right.size ){
		T*np=new T[right.size];
		assert(np!=0);
		delete[]data;
		size = right.size ;
		data=np;
	}
	for(unsigned i=0;i<size;i++)
		data[i]=right.data[i];
	return *this;
}

⌨️ 快捷键说明

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