【发布时间】:2015-12-18 20:13:53
【问题描述】:
我正在开发 PLY 文件阅读器(带有顶点和面位置信息的 txt 文件)。它由标题、顶点位置、面信息组成。
标题
-1 -1 -1 // x y z 坐标
3 1 2 3 // 这个面由 3 个顶点组成 - 1,2,3
然后我用 OpenGL 绘制它。
我让它与数组一起工作,现在我想使用向量容器来节省价值。因为我不必在编译期间知道大小。
我初始化我的两个向量:
vector<string> ply_file;
vector< vector<float> > vertex_list;
使用 ply_file 一切正常,但是当我尝试使用此代码写入 vertex_list 时:
int j = 0;
for(int i=first_vertex_row-1;i<first_vertex_row+vertex_number-1;i++)
{
std::stringstream ss(ply_file[i]);
ss >> vertex_list[j][0] >> vertex_list[j][1] >> vertex_list[j][2]; // x,y,z
j++;
}
但我得到调试断言失败:向量下标超出范围。
我知道我写错了,但我无法让它工作。 是否可以使用字符串流将其写入多维向量?如果可以,如何实现?
【问题讨论】:
-
断言发生时,
i和j的值是多少?是否在各个向量的范围内? -
使“它”对一维向量起作用(通过一个小代码示例),一切都会变得清晰。
-
您没有向我们展示您使用
vector::push_back、vector::insert、vector::resize等设置向量的大小。现在,您声明了两个空向量,然后使用它们显示代码如果它们填充了数据。这不是一个完整的例子。 -
哎呀,我只在这些行中使用 vertex_list。我认为第二个示例足以用于数据写入。所以:std::stringstream ss(ply_file[i]); ss >> ...不会将数据推送到向量中?
标签: c++ vector multidimensional-array containers