C++ 中带条件的循环擦除

2024-03-26

有没有更好的写法:

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(使用前将#替换为@)

C++ 中带条件的循环擦除 的相关文章

随机推荐