关于c++迭代器的问题

naxinsi2099 2016-08-25 02:58:41
代码如下,其中npoints=682,最后想去除source_cloud中的指定数据,但是for循环运行到n=677时,报错“vector iterator offset out of range”。请问该如何修改?

source_cloud->width = nPoints;
source_cloud->height = 1;
source_cloud->is_dense = false;
source_cloud->resize(source_cloud->width*source_cloud->height);

for (size_t i = 0; i < source_cloud->size(); i++)
{
source_cloud->points[i].x = points[i * 4 + 0];
source_cloud->points[i].y = points[i * 4 + 1];
source_cloud->points[i].z = points[i * 4 + 2];
}
for (int n = 675; n < 682; n++)
{
pcl::PointCloud<pcl::PointXYZ>::iterator index = source_cloud->begin();
index = source_cloud->begin() +n;
source_cloud->erase(source_cloud->begin());


}
...全文
177 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-08-25
  • 打赏
  • 举报
回复
  for (int n = 675; n < 682; n++)
    {
        pcl::PointCloud<pcl::PointXYZ>::iterator index = source_cloud->begin();
        index = source_cloud->begin() +675;
        source_cloud->erase(source_cloud->begin());
     
         
    }
naxinsi2099 2016-08-25
  • 打赏
  • 举报
回复
引用 2 楼 woshirenjun12 的回复:
超出范围了,你的容器里有多少个数?
682组
IT_拖油瓶 2016-08-25
  • 打赏
  • 举报
回复
超出范围了,你的容器里有多少个数?

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧