日常代码题0

描述

构造一个模板类(Vector),数据成员如下:

template<typename T>
class Vector
{
private:
    T x, y, z;
};

完成Vector,并用以下函数测试

int main()
{
    double a, b, c;
    std::cin >> a >> b >> c;
    Vector<double> v1(a, b, c), v2(v1), v3, v4;
    double d;
    std::cin >> d;
    v4 = d * v1 + v2;

    std::cout << v4 <<std::endl;

    Vector<double>  v;
    std::cin >> v;

    int flag = (v4 == v);
    std::cout << flag << std::endl; 

    return 0;
}

我的代码:

#include <iostream>

template <typename type> class Vector
{

	public:
		Vector();
		~Vector();
		Vector(type x, type y, type z);
		Vector(Vector<type> &vec);

	private:
		type x, y, z;

		template<typename type> friend Vector<type> operator*(type c, Vector<type> vec);
		template<typename type> friend Vector<type> operator*(const Vector<type> vec, const type c);
		template<typename type> friend Vector<type> operator+(const Vector<type> vec1, const Vector<type> vec2);
		template<typename type> friend bool operator==(const Vector<type> vec1, const Vector<type> vec2);
		template<typename type> friend std::ostream &operator<<(std::ostream &os, const Vector<type> vec);
		template<typename type> friend std::istream &operator>>(std::istream &is,Vector<type> vec);
		
};

#pragma region 

template<typename type> Vector<type>::Vector()
{

}

template<typename type> Vector<type>::~Vector()
{

}

template<typename type> Vector<type>::Vector(type x, type y, type z)
{
	Vector<type>::x = x;
	Vector<type>::y = y;
	Vector<type>::z = z;
}

template<typename type> Vector<type>::Vector(Vector<type>& vec)
{
	Vector<type>::x = vec.x;
	Vector<type>::y = vec.y;
	Vector<type>::z = vec.z;
}

template<typename type> Vector<type> operator*(const type c, const Vector<type> vec) 
{
	Vector<type> ans;
	ans.x = vec.x *c;
	ans.y = vec.y *c;
	ans.z = vec.z *c;
	return ans;
}

template<typename type> Vector<type> operator*(const Vector<type> vec, const type c) 
{
	Vector<type> ans;
	ans.x = vec.x *c;
	ans.y = vec.y *c;
	ans.z = vec.z *c;
	return ans;
}

template<typename type> Vector<type> operator+(const Vector<type> vec1, const Vector<type> vec2) 
{
	Vector<type> ans;
	ans.x = vec1.x + vec2.x;
	ans.y = vec1.y + vec2.y;
	ans.z = vec1.z + vec2.z;
	return ans;
}

template<typename type> bool operator==(const Vector<type> vec1, const Vector<type> vec2) 
{
	if (vec1.x != vec2.x || vec1.y != vec2.y || vec1.z != vec2.z)
	{
		return true;
	}

	else
	{
		return false;
	}
}

template<typename type>  std::ostream &operator<<(std::ostream &os,const Vector<type> vec)
{
	return os<< vec.x << " " << vec.y << " " << vec.z << std::endl;
}

template<typename type> std::istream &operator>>(std::istream &is, Vector<type> vec)
{
	return is >> vec.x >> vec.y >> vec.z;
}

#pragma endregion

int main()
{
	double a, b, c;
	std::cin >> a >> b >> c;
	Vector<double> v1(a, b, c), v2(v1), v3, v4;
	double d;
	std::cin >> d;
	v4 = d * v1 + v2;

	std::cout << v4 << std::endl;

	Vector<double>  v;
	std::cin >> v;
	int flag = (v4 == v1);
	std::cout << flag << std::endl;

	return 0;
}

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值