📜  在C ++中创建自定义矢量类的程序(1)

📅  最后修改于: 2023-12-03 15:37:34.401000             🧑  作者: Mango

在C++中创建自定义矢量类的程序

在C++中创建自定义矢量类是一种方便的方法,可以通过该类来存储和操作多维数据。下面是一个简单的示例程序,演示了如何在C++中创建自定义矢量类。

C++程序示例
#include <iostream>
#include <vector>

class Vector {
public:
    Vector(const std::vector<double>& components) : components(components) {}

    Vector operator+(const Vector& other) const {
        std::vector<double> result;
        for (int i = 0; i < components.size(); i++) {
            result.push_back(components[i] + other.components[i]);
        }
        return Vector(result);
    }

    Vector operator-(const Vector& other) const {
        std::vector<double> result;
        for (int i = 0; i < components.size(); i++) {
            result.push_back(components[i] - other.components[i]);
        }
        return Vector(result);
    }

    Vector operator*(double scalar) const {
        std::vector<double> result;
        for (int i = 0; i < components.size(); i++) {
            result.push_back(components[i] * scalar);
        }
        return Vector(result);
    }

    double length() const {
        double sum = 0;
        for (double component : components) {
            sum += component * component;
        }
        return sqrt(sum);
    }

    friend std::ostream& operator<<(std::ostream& out, const Vector& vector);

private:
    std::vector<double> components;
};

std::ostream& operator<<(std::ostream& out, const Vector& vector) {
    out << "( ";
    for (double component : vector.components) {
        out << component << " ";
    }
    out << ")";
    return out;
}

int main() {
    Vector a({ 1, 2, 3 });
    Vector b({ 4, 5, 6 });

    std::cout << "a = " << a << std::endl;
    std::cout << "b = " << b << std::endl;
    std::cout << "a + b = " << a + b << std::endl;
    std::cout << "a - b = " << a - b << std::endl;
    std::cout << "2a = " << a * 2 << std::endl;
    std::cout << "||a|| = " << a.length() << std::endl;
    std::cout << "||b|| = " << b.length() << std::endl;

    return 0;
}
程序解析

该程序定义了一个名为Vector的自定义类,用于表示矢量。该类有以下公共方法:

  • Vector构造函数:接受一个std::vector<double>类型的参数。这个参数是我们要存储的矢量的各个组件。
  • operator+方法:重载加号运算符。计算两个矢量的和,返回一个新的Vector对象。
  • operator-方法:重载减号运算符。计算两个矢量的差,返回一个新的Vector对象。
  • operator*方法:重载乘号运算符。将矢量的各个组件乘以一个标量,返回一个新的Vector对象。
  • length方法:计算矢量的长度,返回一个double类型的值。
  • operator<<方法:重载输出运算符。以( )形式输出矢量的各个组件。

在程序的main函数中,我们创建了两个矢量对象ab,并对它们进行了一些操作。然后输出了一些结果。

程序输出
a = ( 1 2 3 )
b = ( 4 5 6 )
a + b = ( 5 7 9 )
a - b = ( -3 -3 -3 )
2a = ( 2 4 6 )
||a|| = 3.74166
||b|| = 8.77496

程序输出了两个矢量对象ab的值,以及它们的和、差、数量乘积、长度等值。

总结

在C++中创建自定义矢量类既简单又有用。我们可以通过自定义矢量类来处理多维数据,进行数学计算和数据操作,仅是上例中仅仅涉及了一些基本的操作。