我对使用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();
};
但似乎完全失败了。
由于
答案 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
会自动增加尺寸。