C++构造一个向量类Vector,私有元素有向量维数和元素存储首地址,有无参构造函数,有参构造函数,拷贝构造函数,析构函数,输出函数,成员函数获取对象维数,成员函数实现向量加 减 乘运算,以及实现跟向量赋值和读取向量
时间: 2024-12-13 20:15:20 浏览: 8
c++实现任意维数向量类的操作.7z
在C++中,我们可以创建一个名为`Vector`的类来表示向量,包含必要的属性和操作。这里是一个简单的实现:
```cpp
#include <iostream>
#include <vector>
class Vector {
private:
int dim; // 向量维度
double* data; // 存储元素的首地址
public:
// 无参构造函数
Vector() : dim(0), data(nullptr) {}
// 有参构造函数
explicit Vector(int size) : dim(size), data(new double[size]) {
for (int i = 0; i < size; ++i)
data[i] = 0.0;
}
// 拷贝构造函数
Vector(const Vector& other) : dim(other.dim), data(new double[other.dim]) {
std::copy(other.data, other.data + other.dim, data);
}
~Vector() { // 析构函数
delete[] data;
}
// 输出函数
void print() const {
std::cout << "Vector dimensions: " << dim << "\n";
for (int i = 0; i < dim; ++i)
std::cout << "Element at index " << i << ": " << data[i] << " ";
std::cout << "\n";
}
// 获取维度
int getDim() const { return dim; }
// 加法运算
Vector operator+(const Vector& other) const {
Vector result(dim);
for (int i = 0; i < dim; ++i)
result.data[i] = data[i] + other.data[i];
return result;
}
// 减法运算
Vector operator-(const Vector& other) const {
Vector result(dim);
for (int i = 0; i < dim; ++i)
result.data[i] = data[i] - other.data[i];
return result;
}
// 乘法运算(假设这里是点积)
Vector operator*(double scalar) const {
Vector result(dim);
for (int i = 0; i < dim; ++i)
result.data[i] = data[i] * scalar;
return result;
}
// 赋值运算
Vector& operator=(const Vector& other) {
if (this != &other) {
delete[] data;
dim = other.dim;
data = new double[dim];
std::copy(other.data, other.data + other.dim, data);
}
return *this;
}
// 读取向量(假设我们从用户输入读取数据)
friend std::istream& read(std::istream& in, Vector& vector) {
in >> vector.dim;
vector.data = new double[vector.dim];
in.read(vector.data, sizeof(double) * vector.dim);
return in;
}
};
// 示例用法
int main() {
Vector v1(5);
v1.print();
Vector v2(5);
v2.print();
// 对v1执行加减乘操作
v1 += v2;
v1 -= v2;
v1 *= 2.0;
v1.print();
return 0;
}
```
阅读全文