我们目前正在使用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)”。我不确定我明白为什么会这样。在此代码之后不使用迭代器,因此它应该是安全的,对吧?