📅  最后修改于: 2023-12-03 15:37:34.401000             🧑  作者: Mango
在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
函数中,我们创建了两个矢量对象a
和b
,并对它们进行了一些操作。然后输出了一些结果。
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
程序输出了两个矢量对象a
和b
的值,以及它们的和、差、数量乘积、长度等值。
在C++中创建自定义矢量类既简单又有用。我们可以通过自定义矢量类来处理多维数据,进行数学计算和数据操作,仅是上例中仅仅涉及了一些基本的操作。