我认为我正在努力解决与此类似的问题: C++ std::vector::size() changes its state 但我无法与当前的问题建立联系。
我正在寻找创建指向对象的指针的向量。这样做是因为我希望为要操作的更大对象集创建一个子集。我的代码是
mp::CellSet generate_1D_cellset(geom::NodeSet &nodes){
/*Generate cells from an (ordered in terms of position) list of 1D nodes*/
std::vector<mp::Cell*> cell_array;
cell_array.resize(nodes.number-1);
std::string name = "Linear1D";
for(int i=0; i<(nodes.number-1); i++){
//std::cout << i;
cell_array[i] = generate_1D_cell(i,name,nodes);
}
mp::CellSet cells = mp::CellSet(cell_array);
return cells;
}
当我在创建之后立即查询(使用gdb)cell_array.size()
或者在调整大小之后我得到了我期望的答案(2我的测试问题)但是如果我在for循环开始时查询相同的响应我发现cell_array.size()
给出了一个非常意外的值(非常大)。
为什么矢量的长度会发生变化?指向Cell对象的指针是否以某种方式超出范围?