boost :: filter_iterator - 我如何用STL做到这一点?

时间:2009-04-25 23:51:21

标签: c++ stl boost filter iterator

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

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

看起来不错,我可以使用它,但是我可以用好的旧STL做到吗?当然,不要将元素复制到新容器中。

我想我必须创建另一个迭代器类,它提供必要的begin()end()等函数并进行过滤?所以我必须重新实现boost iterator_filter ...?

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:4)

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