我在尝试该场景时遇到运行时错误,并且我得到了矢量下标超出范围
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
答案 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 };