Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ std::vector resize()仅在清除()后起作用_C++_Vector_Resize - Fatal编程技术网

C++ std::vector resize()仅在清除()后起作用

C++ std::vector resize()仅在清除()后起作用,c++,vector,resize,C++,Vector,Resize,我有一个向量对象: std::vector<std::vector<MyClass>> _matrix; 然后: _matrix.resize(_rows, std::vector<MyReal>(_colms)); _matrix.resize(_rows,std::vector(_colms)); 当然,我正在丢失数据。(对我来说没关系) 这是预期的行为吗?来自以下文档: _Val:如果新大小大于原始大小,则添加到向量的新元素的值 只有新行才能获得

我有一个向量对象:

std::vector<std::vector<MyClass>> _matrix;
然后:

_matrix.resize(_rows, std::vector<MyReal>(_colms)); 
_matrix.resize(_rows,std::vector(_colms));
当然,我正在丢失数据。(对我来说没关系)

这是预期的行为吗?

来自以下文档:

_Val:如果新大小大于原始大小,则添加到向量的新元素的值

只有新行才能获得带有附加列的向量(
std::vector(\u colms)
)<代码>调整大小不会更改现有行

更新:要正确调整整个向量的大小,请迭代现有行并调整这些向量的大小,然后添加新行。像这样的方法应该会奏效:

for (size_t i = 0; i < _matrix.size(); i++)
  _matrix[i].resize(_colms);
_matrix.resize(_rows, std::vector<MyReal>(_colms));
for(size_t i=0;i<_matrix.size();i++)
_矩阵[i]。调整大小(_colms);
_调整大小(_行,std::vector(_列));

实际上,只有矩阵的colmumns大小不会因resize命令而改变。我原来的问题是错的。实际上,只有_矩阵的colmumns大小不会因resize命令而改变。正如我附带指出的,我认为以下划线开头的变量是为编译器保留的,如果不使用它们,可能会更好。如果我错了,请更正。我使用下划线表示类私有成员。我认为这是传统的做法。@Tomas如果它们以双下划线或下划线和大写字母开头,那么它们是保留的。你说得对。有没有办法将大小调整到新的矩形大小?好的,我现在了解了调整大小的功能。在我的例子中,当我不介意丢失数据时,使用clear()更简单。谢谢
_matrix.resize(_rows, std::vector<MyReal>(_colms)); 
for (size_t i = 0; i < _matrix.size(); i++)
  _matrix[i].resize(_colms);
_matrix.resize(_rows, std::vector<MyReal>(_colms));