我传递了一个Iterator,我必须将它传递给另一个函数 - 但是过滤掉了以便跳过某些元素(它是一系列指针,我想过滤掉NULL指针)。
我用谷歌搜索“stl过滤器迭代器“看看如何做到这一点,并且 提高:: filter_iterator 来了
这看起来不错,我可以使用它,但我可以用旧的STL做到这一点吗?当然,不要将元素复制到新容器中。
我想我必须创建另一个提供必要的迭代器类 begin()
, end()
等功能并进行过滤?所以我必须重新实现 boost
iterator_filter
...?
你是对的;你本质上是自己重新创建过滤器迭代器。
我的建议是使用Boost的filter_iterator。 Boost具有c ++最常用的外部库的特殊地位;许多c ++委员会成员帮助编写了库以获得提升。它的无处不在基本上使它几乎成为现实;这里没有理由重新发明轮子。
你是对的;你本质上是自己重新创建过滤器迭代器。
我的建议是使用Boost的filter_iterator。 Boost具有c ++最常用的外部库的特殊地位;许多c ++委员会成员帮助编写了库以获得提升。它的无处不在基本上使它几乎成为现实;这里没有理由重新发明轮子。
我同意rlbond。不要重新发明轮子并使用Boost :: filter_iterator。如果您不想在项目中拥有所有boost库,则可能需要考虑使用 boost.bcp 准确地提取你需要的那些。