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

Fra*_*ank 11 c++ boost iterator stl filter

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

我用google搜索" stl filter iterator "来看看如何做到这一点,并且boost :: filter_iterator出现了.

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

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

rlb*_*ond 8

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

  • 我有点不同意:安装加速可能很麻烦,有时候你不需要额外的依赖.我认为不会重写`filter_iterator`的*真正的原因是它实际上很难写(并且非常麻烦). (3认同)