我是 C++ 新手。 我正在尝试制作一个由二维 vector 指针组成的类。我正在创建一个以二维 vector 作为参数的对象。我正在尝试使用指针引用此 2D vector 。这编译得很好,但我在执行时遇到段错误。 我在这里附上我的代码。请帮忙!
# include <iostream>
# include <vector>
using namespace std;
class Vectorref {
vector<vector<float> > *vptr; // pointer to 2D vector
public:
Vectorref(vector<vector<float> >);
double getval(int,int);
};
Vectorref::Vectorref(vector<vector<float> > v)
{
vptr = &v;
}
double Vectorref::getval(int r, int c)
{
return (*vptr)[r][c];
}
int main(){
vector<vector<float> > A (3,vector<float>(3,2.0));
Vectorref B(A);
for(int i=0; i<3 ;i++){
for(int j=0; j<3; j++){
cout << B.getval(i,j) << "\t";
}
cout << endl;
}
return 0;
}
最佳答案
你应该通过 v
作为引用而不是复制。
Vectorref(vector<vector<float> >&);
Vectorref::Vectorref(vector<vector<float> >& v)
您必须确保您的vector<vector<float>>
比你的 Vectorref
长寿,否则你会再次遇到段错误。
你的 getval
函数应返回 float
而不是 double
.
关于c++ - 作为类成员的 2D vector 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43200916/