不寻常的std :: vector :: size()响应

时间:2017-03-13 02:47:51

标签: c++ stdvector

我认为我正在努力解决与此类似的问题: 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对象的指针是否以某种方式超出范围?

0 个答案:

没有答案