我有一个大点云矢量pc可以使用。我需要识别集群,将它们移动到新的矢量并调整原始矢量的大小。在运行代码时,我没有输出。
for(int j=0; j< pc.points.size(); j++)
{
int k= rand() % pc.points.size();
ref_point = pc.points[k];
for (int i = 0; i < pc.points.size(); i++) {
{if (pc.points[i].x - ref_point.x < 10 && pc.points[i].y - ref_point.y < 10)
{
Cluster.push_back(pc.points[i]);
pc.points.erase(pc.points.begin() + i);
pc.points.shrink_to_fit();
}
}
Cluster.push_back(ref_point);
pc.points.erase(pc.points.begin()+k);
pc.points.shrink_to_fit();
}
编辑:我已经修改了我的代码,以至于我在每一步都得到了vlaues,但是在第4次迭代之后,我收到一条错误消息,说出来自VS的vector iterator + offset out of range
。我哪里错了?
do
{
int rand1 = rand() % pc.points.size();
ref_point = pc.points[rand1];
for (int i = 0; i < pc.points.size(); i++)
{
if (pc.points[i].x - ref_point.x < 5.5 && pc.points[i].y - ref_point.y < 5.5)
{
Cluster.push_back(pc.points[i]);
pc.points.erase(pc.points.begin() + i);
pc.points.shrink_to_fit();
}
}
Cluster.push_back(ref_point);
pc.points.erase(pc.points.begin() + rand1);
pc.points.shrink_to_fit();
} while(true);
尝试在第5次迭代时从原始点云矢量pc中删除ref_point时发生错误。