删除循环中Vector的元素

Deleting Elements of Vector Inside a Loop

本文关键字:元素 Vector 循环 删除      更新时间:2023-10-16

我有一个类型为:vector<string>的向量words。我试图删除words的每一个元素,不包含在vector<string>称为largest_family,但似乎无法做到这一点。如有任何帮助,不胜感激。

vector<string>::iterator it = words.begin();
for (int i = 0; i < words.size(); i++)
{
    if (find(largest_family.begin(), largest_family.end(), words[i]) == largest_family.end())
    {
        words.erase(it);
    }
    else
    {
        it++;
    }
}

执行此任务的正确方法是:

for (vector<string>::const_iterator it = words.begin(); it != words.end();)
{
    if (find(largest_family.begin(), largest_family.end(), *it) == largest_family.end())
    {
        it = words.erase(it);
    }
    else
    {
        ++it;
    }
}

SO上有很多相关的话题,比如this或this。

相关文章: