在OOP类中传递二维向量

时间:2013-04-01 06:02:46

标签: c++ oop class vector 2d

我对使用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() {};

在函数中,我做了一些计算,结果存储在2D数组(高)中。我需要将整个二维数组传递给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();
};

但似乎完全失败了。

由于

2 个答案:

答案 0 :(得分:0)

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

我以这种方式思考。

答案 1 :(得分: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
}

function致电main以获取您的数据:

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会自动增加尺寸。