擦除使Coverity中的迭代器无效

时间:2018-03-20 05:58:10

标签: c++ iterator static-analysis coverity

我们目前正在使用Coverity的Synapsis,它运行在代码库上并标记会导致错误的代码行。

我有这段代码:

auto it = std::find_if(my_container.my_list.begin(), my_container.my_list.end(),
            [&](my_struct temp)
            {
                return temp._id == id;
            });

/*To erase duplicates*/
if (it != my_container.my_list.end())
{
     my_container.my_list.erase(it);
}

erase部分被识别为“擦除使迭代器无效”,然后“使用无效迭代器(INVALIDATE_ITERATOR)”。我不确定我明白为什么会这样。在此代码之后不使用迭代器,因此它应该是安全的,对吧?

0 个答案:

没有答案