我收到了一个迭代器,我必须将它传递给另一个函数——但经过过滤以便跳过某些元素(这是一个指针范围,我想过滤掉 NULL 指针)。
我在谷歌上搜索了“STL filter iterator”以查看如何执行此操作,并且 boost::filter_iterator上来了。
这看起来不错,我可以使用它,但我也可以使用良好的旧 STL 来实现吗?当然,无需将元素复制到新容器中。
我想我必须创建另一个迭代器类来提供必要的 begin()
、end()
等函数并进行过滤?所以我必须重新实现 boost
iterator_filter
...?
最佳答案
你是对的;您实际上是在自己重新创建过滤器迭代器。 我的建议是使用 Boost 的 filter_iterator。 Boost 作为 c++ 最常用的外部库具有特殊地位;许多 c++ 委员会成员帮助编写了 boost 库。它的无处不在本质上使它几乎保持原样;真的没有理由在这里重新发明轮子。
关于c++ - boost::filter_iterator——我将如何使用 STL 做到这一点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/789954/