【发布时间】:2021-04-11 02:04:14
【问题描述】:
我正在做作业,我的程序需要从文件中读取二维数组。我必须使用指向数组的指针,这就是作业的重点。出于测试目的,我还包括了矢量。当矩阵输出到数组时,输出不正确的值,但向量输出正确的值。在更大的数组(100 x 50)上测试时,指向数组的指针在不正确的值中也输出了很好的值。但由于它的大小,我不在这里包括它。我究竟做错了什么? 这是输入的部分代码:
Matrix (std::istream &is)
{
is >> n_ >> m_;
int counter = 0;
int matrix_temp[n_ * m_];
while(counter < (n_ * m_))
{
int x = 0;
is >> x;
matrix_temp[counter] = x;
vector_test.push_back(x);
counter ++;
}
mat_ = matrix_temp;
}
这里是类变量:
private:
int n_;//wiersze
int m_;//kolumny
int *mat_;
std::vector<int> wektor;
这里是输出部分代码:
friend std::ostream &operator<< (std::ostream &os, const Matrix &m)
{
int counter = 0;
int size = m.n_ * m.m_;
for(int i = 0; i<size; i++)
{
os << counter <<"\t "<<*(m.mat_ + counter) <<"\t"<<m.vector_test[i]<<std::endl;
counter ++;
}
return os;
}
主要:
int main()
{
Matrix matrix = Matrix(std::cin);
std::cout << matrix;
}
输入文件(第一行是大小:行和列):
5 3
3 3 3
3 3 3
3 3 3
3 3 3
3 3 3
输出:
【问题讨论】:
-
您认为
int matrix_temp[n_ * m_];存储在哪里,int *mat_;指向哪里?
标签: c++ arrays file pointers vector