-4

我对使用 OOP 传递 2D 矢量感到困惑

例如:

class ABC
{
public:
    void function() 
    {
     vector<vector<string>> high;
     for ( int i=0; i<100; i++ )
     {
         high[0].push_back(i);
     }
    }
};

int main() {};

在函数中,我做了一些计算,结果存储在二维数组(高)中。我需要将整个二维数组传递给主函数,我该怎么做?

我试过这个,

class ABC{
public:
    vector<vector<string>> function ()
    {
    vector<vector<string>> high;
    for ( int i=0; i<100; i++ )
    {
    high[0].push_back(i);
    }
    }
};
int main()
{
ABC abc;
abc.function();
};

但这似乎是一个彻底的失败。

谢谢

4

2 回答 2

0
for(int i = 0; i < 100; i++)
   for(int j = 0; j < 100; j++)
    //high[i].[j]
    //high.at(i).at(j)

我是这样想的。

于 2013-04-01T07:31:06.047 回答
0

您需要从以下函数返回数组:

vector<vector<string>> function ()
{
    vector<vector<string>> high;
    high.resize(1);   // <-- note this resize, because you are using high[0] 
                      //     element later
    for ( int i=0; i<100; i++ )
    {
        high[0].push_back("some data...");
    }
    return high;      // <-- note this return statement
}

调用functionfrommain以获取您的数据,如下所示:

vector<vector<string>> data = function();

其他但更有效的解决方案是在其中创建您的数组main并通过非常量引用将其传递给function

class ABC{
public:
void function (vector<vector<string>>& high)
{
    high.resize(1);
    for ( int i=0; i<100; i++ )
    {
        high[0].push_back("some data...");
    }
}
};

int main()
{
    ABC abc;
    vector<vector<string>> high;
    abc.function(high);
};

还要确保您的向量包含您要访问的元素。例如high[0]访问第一个向量元素。用于resize更改大小。请注意,这会push_back自动增加大小。

于 2013-04-01T07:43:26.537 回答