有没有更好的写法:
for (auto i = container.begin(); i != container.end();)
{
if (condition(i))
{
i = container.erase(i);
continue;
}
++i;
}
这段代码满足了我的要求,但感觉风格很糟糕。
我该如何改进它?
我的容器是std::map
,但通用的解决方案会很酷。
Use erase
+ remove_if
:
auto pred = /* lambda or something*/
container.erase(std::remove_if(container.begin(),
container.end(),
pred)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)