我在一起拼接列表后看到了一些关于无效迭代器的帖子,但是却找不到解决问题的方法。我正在写一个例程
for (KLUSTER::iterator iter = neighbours.begin(); iter != neighbours.end(); ++iter)
{
if (!(*iter).checked)
{
(*iter).checked = true;
KLUSTER moreneighbours = T.RegionQuery(&(*iter), ClusterId);
if (moreneighbours.size() >= DBS_MINPTS)
{
(*iter).ClId = *ClusterId;
neighbours.splice(neighbours.end(), moreneighbours); // ****
}
}
if ((*iter).ClId == DBS_UNCLAS)
{
(*iter).ClId = *ClusterId;
AddToCluster(cluster, &(*iter));
}
}
拼接线标记为// **** 如果我发表评论,循环就会停止。 如果我不对此进行评论,则循环不会停止。有人知道我已经取得了什么吗?
提前致谢。
P.S。我知道如何绕过它,但我不知道我是否正确行事。
P.P.S。忘了添加typedef std :: list kluster;和#define KLUSTER kluster