首先,这是一个给我的练习,所以我不能改变东西,必须与它一起工作。我有一个二维向量又名矩阵。我的头文件看起来像这样
#include <vector>
#include <iostream>
using namespace std;
class Matrix{
private:
vector<vector<double>> 2d;
public:
explicit Matrix(unsigned int sizeY=0,unsigned int sizeX=0,double value= 0.0);
~Matrix() = default;
Matrix(const Matrix &other);
Matrix(Matrix &&other) = default;
Matrix& operator=(const Matrix &other);
Matrix& operator=(Matrix &&other) = default;
//other + - operators
//INDEX
vector<double>& at(unsigned int i);
const vector<double>& at(unsigned int i)const;
const vector<double>& operator[] (double m) const;
vector<double>& operator[] (double m);
};
Matrix operator+(const Matrix& d1, const Matrix& d2);
Matrix operator-(const Matrix& d1, const Matrix& d2);
ostream& operator<<(ostream &o, const Matrix& v);
istream& operator>>(istream &i, Matrix& v);
所以现在我实现了除了〈〉操作符之外的所有东西< and >。现在的问题是,如果我想遍历2d vec矩阵,除了写getter之外,有没有其他方法可以在Matrix类之外获得“深度”?如果矩阵是N X M,例如4x 4,我可以用类似2d[0]的东西获得第二个4的“宽度”。size()但是我不知道我如何才能得到“深度”,否则就使用getter。而且我也不能把2D改成public或者使用模板。
我自己试了大约2-3个小时,找不到任何解决办法,也许在给定的条件下是不可能的。
1条答案
按热度按时间iezvtpos1#
2d[0].size()给出了存储在2d中的第一个向量的长度。要获得2d的长度,可以直接在2d上调用相同的函数。
2d.size()= 2d的长度2d[0].size()=存储在2d中的第一个向量的长度