首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何灵活地将一些元素从std::set移动到另一个容器?

如何灵活地将一些元素从std::set移动到另一个容器?
EN

Stack Overflow用户
提问于 2012-01-06 05:40:58
回答 1查看 1.3K关注 0票数 2

由于迭代器在删除操作时无效,我如何用最少的代码迭代std::set的所有元素,删除其中的一些元素?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-01-06 05:47:46

代码语言:javascript
复制
// Filters the elements of a set:  elements that satisfy the predicate 'pred'
// are removed from the source set and inserted into the output.
template <typename TSet, typename TOutputIterator, typename TPredicate>
void extract_if(TSet& s, TOutputIterator out, TPredicate pred)
{
    for (typename TSet::iterator it(s.begin()); it != s.end();)
    {
        if (pred(*it))
        {
            *out++ = *it;
            it = s.erase(it);
        }
        else
        {
            ++it;
        }
    }
}
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8750231

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档