#include<iostream>
using namespace std;
template<typename T>
T square(T x)
{
return x*x;
}
template<typename T>
class BoVector{
private:
T arr[1000];
int size;
public:
BoVector():size(0){}
void push(T x)
{
arr[size] = x;
size++;
}
T get(int i)
{
return arr[i];
}
int getSize()
{
return size;
}
void print()
{
for(int i=0;i<size;i++)
{
cout<<arr[i]<<" ";
}
}
};
template<typename T>
BoVector<T> operator*(BoVector<T>& r1,BoVector<T>& r2)
{
BoVector<T> ret;
for(int i=0;i<r1.getSize();i++)
ret.push(r1.get(i)*r2.get(i));
return ret;
}
template<typename T>
bool operator==(BoVector<T>& r1,BoVector<T>& r2)
{
if(r1.getSize() != r2.getSize())
return false;
for(int i=0;i<r1.getSize();i++)
{
if(r1.get(i) != r2.get(i))
return false;
}
return true;
}
template<typename T>
bool operator<(BoVector<T>& r1,BoVector<T>& r2)
{
if(r1.getSize()<r2.getSize())
return true;
return false;
}
template<typename T>
bool operator>(BoVector<T>& r1,BoVector<T>& r2)
{
if(r1.getSize()>r2.getSize())
return true;
return false;
}
template<typename T>
void compare(BoVector<T>& r1,BoVector<T>& r2)
{
if(r1>r2)
cout<<"第一个比第二个大"<<endl;
if(r1<r2)
cout<<"第一个比第二个小"<<endl;
if(r1==r2)
cout<<"第一个与第二个相等"<<endl;
}
int main()
{
BoVector<int> bv;
bv.push(2);
bv.push(3);
bv.push(5);
bv.push(4);
BoVector<int> bv2;
bv2.push(2);
bv2.push(3);
bv2.push(2);
bv = square(bv);
bv.print();
compare(bv,bv2);
system("pause");
return 0;
}