我想创建一个函数,如果它们符合特定条件,则将项目从一个 STL 列表移动到另一个。
此代码不是执行此操作的方法。迭代器很可能会被 erase() 函数失效并导致问题:
for(std::list<MyClass>::iterator it = myList.begin(); it != myList.end(); it++)
{
if(myCondition(*it))
{
myOtherList.push_back(*it);
myList.erase(it);
}
}
那么任何人都可以提出更好的方法吗?
最佳答案
删除
returns an iterator指向删除后的元素:
std::list<MyClass>::iterator it = myList.begin();
while (it != myList.end())
{
if(myCondition(*it))
{
myOtherList.push_back(*it);
it = myList.erase(it);
}
else
{
++it;
}
}
关于c++ - 从 STL 列表中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/501962/