【问题标题】:boost::filter_iterator -- how would I do that with the STL?boost::filter_iterator -- 我将如何使用 STL 做到这一点?
【发布时间】:2009-04-25 23:51:20
【问题描述】:

我传递了一个迭代器,我必须将它传递给另一个函数——但经过过滤以便跳过某些元素(这是一个指针范围,我想过滤掉 NULL 指针)。

我搜索了“stl filter iterator”以了解如何执行此操作,然后 boost::filter_iterator 出现了。

这看起来不错,我可以使用它,但我也可以使用旧的 STL 来做到这一点吗?当然,无需将元素复制到新容器中。

我想我必须创建另一个迭代器类来提供必要的begin()end() 等功能并进行过滤?所以我必须重新实现boostiterator_filter...?

【问题讨论】:

    标签: c++ stl boost filter iterator


    【解决方案1】:

    你是对的;您实际上是在自己重新创建过滤器迭代器。 我的建议是使用 Boost 的 filter_iterator。 Boost 作为 c++ 最常用的外部库具有特殊的地位;许多 c++ 委员会成员帮助编写了用于 boost 的库。它的无处不在本质上使它几乎保持原样。真的没有理由在这里重新发明轮子。

    【讨论】:

    • 我有点不同意:boost 安装起来可能很麻烦,而且有时你不想要那种额外的依赖。我认为人们不会重写filter_iterator真正原因是,正确编写实际上非常困难(而且非常麻烦)。
    【解决方案2】:

    我同意 rlbond。不要重新发明轮子并使用 Boost::filter_iterator。如果您不想在项目中包含所有 boost 库,您可能需要考虑使用 boost.bcp 来准确提取您需要的库。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 2011-04-17
      • 2019-09-19
      • 2019-04-30
      • 2017-09-23
      • 1970-01-01
      相关资源
      最近更新 更多