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标记。