C++ 删除循环中的向量元素

C++ 删除循环中的向量元素,c++,vector,C++,Vector,我有一个向量,words,类型:vector。我正在尝试删除单词中的每个元素,这些元素不包含在向量中,称为最大的\u族,但似乎无法完成此操作。感谢您的帮助 vector<string>::iterator it = words.begin(); for (int i = 0; i < words.size(); i++) { if (find(largest_family.begin(), largest_family.end(), words[i]) == large

我有一个向量,
words
,类型:
vector
。我正在尝试删除
单词
中的每个元素,这些元素不包含在
向量
中,称为
最大的\u族
,但似乎无法完成此操作。感谢您的帮助

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++;
    }
}
vector::iterator it=words.begin();
for(int i=0;i执行此任务的正确方法是:

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;
    }
}
for(vector::const_iterator it=words.begin();it!=words.end();)
{
如果(查找(最大的族.begin(),最大的族.end(),*it)=最大的族.end())
{
它=单词。擦除(它);
}
其他的
{
++它;
}
}

关于SO有许多相关的主题:例如or。

您应该调用
cbegin()
cend()
如果要使用
const\u迭代器
@GillBates,这取决于标准。我在这里没有看到C++ 11标签,这就是为什么我没有使用它们。@ EdgRokkayC++现在是C++ 14,C++就是这样。我没有看到C++03标记。