【发布时间】:2015-05-13 09:01:30
【问题描述】:
我正在尝试学习如何使用 STL,并尝试编写一个函数来接收对列表的引用并尝试删除所有奇数成员。 我的代码有一个小问题。这是我的代码
void removeOdds(list<int>& myvector)
{
for(list<int>::iterator p=myvector.begin(); p !=myvector.end();p++)
{
if(*p%2 !=0)
{
list<int>::iterator temp=myvector.erase(p);
p=temp;
if(p !=myvector.begin())
p--;
}
}
}
我遇到的问题是,例如,如果我传递一个包含 1 3 5 2 6 7 的列表。删掉1后明显跳到5了,不看3了。 我该如何解决这个问题,因为 p++ 会增加,而 p-- 不会发生,因为我在开始。
【问题讨论】:
-
[OT]:我会避免为
std::list调用参数myvector(因为std::vector存在)。 myInts`