21xrx.com
2025-06-19 18:50:40 Thursday
登录
文章检索 我的文章 写文章
C++定义向量类
2023-07-06 08:20:07 深夜i     23     0
C++ 向量类 定义

C++是一门通用的编程语言,它支持多种编程范式,并且可以用于各种不同的应用领域。在C++中,向量是一种常见的数据类型,用于存储一组有序的数据元素。

为了更方便地使用向量这种数据类型,可以定义一个向量类,以实现一些常见的向量操作。下面是一个使用C++定义向量类的例子:

#include <iostream>
#include <vector>
using namespace std;
class Vector {
public:
  Vector() : x(0), y(0), z(0) {}
  Vector(double x, double y, double z) : x(x), y(y), z(z) {}
  Vector operator+(const Vector& v) const {
    return Vector(x + v.x, y + v.y, z + v.z);
  }
  Vector operator-(const Vector& v) const {
    return Vector(x - v.x, y - v.y, z - v.z);
  }
  Vector operator*(double s) const {
    return Vector(x * s, y * s, z * s);
  }
  double operator*(const Vector& v) const {
    return x * v.x + y * v.y + z * v.z;
  }
  Vector operator^(const Vector& v) const {
    return Vector(y * v.z - z * v.y, z * v.x - x * v.z, x * v.y - y * v.x);
  }
  double length() const {
    return sqrt(x * x + y * y + z * z);
  }
  void normalize() {
    double l = length();
    if (l > 0.0)
      x /= l;
      y /= l;
      z /= l;
    
  }
  friend ostream& operator<<(ostream& os, const Vector& v) {
    os << "(" << v.x << ", " << v.y << ", " << v.z << ")";
    return os;
  }
private:
  double x, y, z;
};
int main() {
  Vector v1(1.0, 2.0, 3.0), v2(4.0, 5.0, 6.0);
  Vector v3 = v1 + v2;
  Vector v4 = v1 - v2;
  Vector v5 = v1 * 2.0;
  double d = v1 * v2;
  Vector v6 = v1 ^ v2;
  cout << "v1 = " << v1 << endl;
  cout << "v2 = " << v2 << endl;
  cout << "v1 + v2 = " << v3 << endl;
  cout << "v1 - v2 = " << v4 << endl;
  cout << "v1 * 2.0 = " << v5 << endl;
  cout << "v1 * v2 = " << d << endl;
  cout << "v1 ^ v2 = " << v6 << endl;
  return 0;
}

在这个例子中,Vector类定义了常见的向量操作,包括向量加、向量减、向量乘、点乘、叉乘和单位化操作。通过定义这些操作,可以方便地在程序中使用向量,并且可以在向量操作中避免繁琐的计算和错误。

需要注意的是,在实现操作时,需要考虑向量的大小和方向。例如,在点乘中,如果两个向量并不在同一方向上,点乘的结果可能并不是两个向量之间的夹角余弦值。为了避免这个问题,可以在乘法操作中使用向量的标准化值来进行计算。

总之,定义向量类是一种常见的编程技巧,可以提高程序的效率和可读性。通过定义向量类,可以方便地在程序中使用向量,并且可以在向量操作中避免繁琐的计算和错误,从而提高程序的可靠性和稳定性。

  
  

评论区