San*_*ich 1 c++ resize vector clear
我有一个矢量对象:
std::vector<std::vector<MyClass>> _matrix;
Run Code Online (Sandbox Code Playgroud)
它是带有一些数据的二维数组.当我尝试使用以下方法调整尺寸时:
_matrix.resize(_rows, std::vector<MyReal>(_colms)); //_rows and _colms are ints
Run Code Online (Sandbox Code Playgroud)
该命令对该对象没有任何作用.所以为了调整大小,我必须首先打电话给:
_matrix.clear();
Run Code Online (Sandbox Code Playgroud)
然后:
_matrix.resize(_rows, std::vector<MyReal>(_colms));
Run Code Online (Sandbox Code Playgroud)
当然,我正在丢失数据.(在我的情况下没关系)
这是预期的行为吗?
来自以下文档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));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1627 次 |
| 最近记录: |