在类OOP中传递二维向量
Passing a 2 dimensional vector in Class OOP
我对使用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数组中(高(。我需要整个二维数组传递给主函数,我该怎么做?
我试过了,
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();
};
但这似乎是一次彻底的失败。
感谢
您需要从以下函数返回数组:
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
}
从main
调用function
以获取如下数据:
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
会自动增大大小。
for(int i = 0; i < 100; i++)
for(int j = 0; j < 100; j++)
//high[i].[j]
//high.at(i).at(j)
我是这样想的。
相关文章:
- 我在二维向量中是否正确分配了内存
- 在二维向量或数组中可以存储的最大元素数是多少?
- 如何将整数字符串转换为整数的二维向量?
- 如何使用擦除和迭代器来删除二维向量中的项目
- 如何在二维向量c++中迭代col
- 如何在C++中将.csv文件的元素存储到二维向量中?
- std::vector::clear()ing 二维向量线程的内部向量安全吗?
- 在我为我的二维向量提供第一个值后控制台关闭
- 以C++输出二维向量
- 在 c++ 中赋值给二维向量
- 在二维向量的每一列中查找最大值
- 类对象初始化的二维向量
- 有没有办法像python:np.concatenate([x,y,z],axis=1)中那样沿着列连接三个二维向量C++
- 我如何在二维向量中存储一些数组
- 我可以push_back矩形形状到继承矩形形状的类的二维向量中吗?
- 二维向量的迭代器
- 在 STL 中,如何交换二维向量
- 创建一个二维向量阵列,遍历
- 创建二维向量的错误
- C++从文件中读取信息并从该信息构建二维向量