![](/img/trans.png)
[英]std::vector resize(0) or clear() - but keep it's capacity
[英]std::vector resize() works only after clear()
我有一个向量对象:
std::vector<std::vector<MyClass>> _matrix;
它是带有一些数据的二维数组。 当我尝试调整尺寸时:
_matrix.resize(_rows, std::vector<MyReal>(_colms)); //_rows and _colms are ints
这个命令对对象没有任何作用。 所以要调整它的大小,我必须先打电话给:
_matrix.clear();
然后:
_matrix.resize(_rows, std::vector<MyReal>(_colms));
当然,我正在丢失数据。 (在我的情况下没关系)
这是预期的行为吗?
来自vector::resize
的文档:
_Val:如果新大小大于原始大小,则添加到向量中的新元素的值。
只有新行获得带有附加列的向量( std::vector<MyReal>(_colms)
)。 resize
不会更改现有行。
更新:要正确调整整个向量的大小,请遍历现有行并调整这些向量的大小,然后添加新行。 这样的事情应该工作:
for (size_t i = 0; i < _matrix.size(); i++)
_matrix[i].resize(_colms);
_matrix.resize(_rows, std::vector<MyReal>(_colms));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.