作为类成员的 2D 矢量指针

2D Vector pointer as member of class

本文关键字:指针 2D 成员      更新时间:2023-10-16

我是c++的新手。我正在尝试制作一个由 2d 矢量指针组成的类。我正在创建一个将 2D 矢量作为参数的对象。我正在尝试使用指针引用此 2D 矢量。这编译得很好,但是我在执行时遇到分段错误。我在这里附加我的代码。请帮忙!

# 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