【发布时间】:2014-01-23 23:40:52
【问题描述】:
我有一个整数向量,我正在反向遍历。我需要在其中搜索一个元素并在遍历向量时删除它的第一次出现。我正在使用以下函数并出现分段错误
for(i=num.end()-1;i!=num.begin()-1;i--)
{
tmp=binary(*i);
if(tmp!=num.end())
{num.erase(i);num.erase(tmp);res++;}
}
这里的函数二进制返回一个迭代器,如果要使用擦除函数的语句,其值肯定小于i。
我使用了以下链接:- How to traverse vector from end to start? 和 Erasing elements from a vector
但他们建议使用 std::remove 和 std::remove_if 函数来擦除所有出现的值。
【问题讨论】:
-
从向量中删除后无法继续迭代。您应该在删除后重置迭代器。
-
您能否通过一个示例详细说明如何做到这一点?