据称,当迭代器变得无效时,您不能在迭代时删除/删除容器中的元素。删除满足特定条件的元素的(安全)方法是什么?请只使用 stl,不要使用 boost 或 tr1。
EDIT如果我想删除满足特定条件的多个元素,是否有更优雅的方法,也许使用函子和 for_each 或擦除算法?
只要在擦除迭代器后不使其无效即可:
MyContainer::iterator it = myContainer.begin();
while(it != myContainer.end())
{
if (*it == matchingValue)
{
myContainer.erase(it++);
}
else
{
++it;
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)