自定义向量类。具体要求如下。 (1)向量的维数可缩放; (2) 对象构造、析构、赋值相关的四大函数;(每个同学必须会写)(3) 其他成员函数(如:返回维数等); (4)测试用例设计。
时间: 2024-09-18 18:07:36 浏览: 85
c++实现任意维数向量类的操作
4星 · 用户满意度95%
自定义向量类通常是一个动态数组的实现,可以动态调整大小以适应不同的维数需求。以下是创建一个基本的可缩放向量类的示例:
```cpp
#include <vector>
class Vector {
private:
std::vector<std::vector<double>> elements; // 存储元素的二维向量
int dimensions[2]; // 记录当前向量的维度
public:
// 构造函数
Vector(int dim1 = 0, int dim2 = 0) : dimensions{dim1, dim2} {
if (dim1 > 0 && dim2 > 0)
elements.resize(dim1, std::vector<double>(dim2, 0));
}
~Vector() {} // 析构函数,无特殊操作默认不写
// 赋值操作
Vector& operator=(const Vector& other) {
if (this != &other) { // 避免自我赋值
dimensions = other.dimensions;
elements = other.elements;
}
return *this;
}
// 返回维数
void getDimensions(int* dim1, int* dim2) const {
*dim1 = dimensions[0];
*dim2 = dimensions[1];
}
// 动态扩容/收缩
void resize(int newDim1, int newDim2) {
elements.resize(newDim1, std::vector<double>(newDim2, 0));
dimensions[0] = newDim1;
dimensions[1] = newDim2;
}
// 写入元素
void setElement(int row, int col, double value) {
elements[row][col] = value;
}
// 读取元素
double getElement(int row, int col) const {
return elements[row][col];
}
// 测试用例
static void test() {
Vector v(2, 3);
v.setElement(0, 0, 1);
v.setElement(1, 2, 2);
assert(v.getElement(0, 0) == 1); // 检查元素是否正确设置
v.resize(3, 4);
assert(v.getDimensions()[0] == 3 && v.getDimensions()[1] == 4); // 检查尺寸改变
}
};
// 运行测试用例
Vector::test();
```
阅读全文