我收到一个迭代器并需要将其传递给另一个函数,但会过滤掉一些元素(它是指针范围,并且我想过滤掉空指针)。
我搜索了“stl filter iterator”以查看如何实现此功能,发现了 boost::filter_iterator。
这看起来很好,我可以使用它,但我能否也用旧的STL来实现呢?当然,不复制元素到新容器中。
我想我必须创建另一个迭代器类,提供必要的begin()
、end()
等函数并进行过滤。因此,我需要重新实现boost
的 iterator_filter
……?
filter_iterator
的真正原因是它实际上非常难以编写(而且非常繁琐),以确保正确性。 - Alexandre C.