📄 vector.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> &);
//输出运算
friend ostream & operator<<(ostream & out,Vector<T> &);
unsigned length() const;
//动态改变向量大小
unsigned setSize(unsigned);
unsigned setSize(unsigned,T);
private:
unsigned size;
T * data;
};
//构造函数
template<class T>
Vector<T>::Vector(unsigned num):size(num){
data=new T[size];
}
template<class T>
Vector<T>::Vector(unsigned num,T V):size(num){
data=new T[size];
for(unsigned i=0;i<size;i++)
data[i]=V;
}
template<class T>
Vector<T>::Vector(const Vector<T> & V){
size=V.size;
data=new double[size];
for(int 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(this==&V)
return *this;
delete[]data;
size=V.size;
data=new double[size];
for(int i=0;i<size;i++)
data[i]=V.data[i];
return *this;
}
//输出操作符重载
template<class T>ostream & operator<<(ostream & out,Vector<T> & V){
for(unsigned i=0;i<V.size;i++)
out<<"["<<i<<"]="<<V.data[i]<<";";
cout<<endl;
return out;
}
//取向量长度
template<class T>
unsigned Vector<T>::length()const{
return size;
}
//动态重置向量
template<class T>unsigned Vector<T>::setSize(unsigned u){
if(u!=size){
T * np=new T[u];
unsigned n=u<=size?u:size;
for(int i=o;i<n;i++)
np[i]=data[i];
delete[]data;
size=u;
data=np;
}
return size;
}
template<class T>unsigned
Vector<T>::setSize(unsigned u, T t){
if(u!=size){
size=u;
delete[]data;
data=new T[size];
}
for(int i=0;i<n;i++)
data[i]=t;
return size;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -