我正在尝试从文件中读取/反序列化元素列表(然后过滤掉其中的一些)。为此目的使用迭代器是一种有用的方法吗?
我目前的尝试是
#include <boost/iterator/iterator_adaptor.hpp>
class ReadIterator : public boost::iterator_adaptor<ReadIterator, Elem *, boost::single_pass_traversal_tag>
{
public:
explicit ReadIterator(const char *filename) : reader(filename) {}
private:
friend class boost::iterator_core_access;
void increment() {
this->base_reference() = reader.readNext();
}
Reader reader;
};
这没有正确地释放内存(例如,readNew 返回一个指向新 Elem 的指针),这样做的正确方法是什么?另外,如何实际使用这样的迭代器,如何确定结果?还是有比使用迭代器更好的方法?