std :: list splicing使迭代器

时间:2015-12-18 11:27:32

标签: c++ iterator splice

我在一起拼接列表后看到了一些关于无效迭代器的帖子,但是却找不到解决问题的方法。我正在写一个例程

    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

0 个答案:

没有答案