访问类内部结构中的向量

时间:2014-08-16 20:38:39

标签: c++ stdvector

我在尝试该场景时遇到运行时错误,并且我得到了矢量下标超出范围

struct Mesh
{
  std::vector<Vertex> mVertices;
}

class Grid
{

public:
Mesh mMesh;
}

Grid g_Grid;

g_Grid.mMesh.mVertices.reserve(40);
g_Grid.mMesh.mVertices[0] = 10; // allocation error 

1 个答案:

答案 0 :(得分:2)

方法保留不会创建向量的元素。它仅为将来可以添加到向量的元素保留内存,例如方法push_back

所以改为写

g_Grid.mMesh.mVertices.reserve(40);
g_Grid.mMesh.mVertices.push_back( 10 );

或者如果你想要元素已经存在,那么写

g_Grid.mMesh.mVertices.resize(40);
g_Grid.mMesh.mVertices[0] = 10;

如果你想立即将几个元素添加到尚未包含任何元素的向量中,那么你可以写

g_Grid.mMesh.mVertices.reserve(40);
g_Grid.mMesh.mVertices = { 10, 20, 30 };