ファイルから要素のリストを読み取り/逆シリアル化しようとしています(そして、それらのいくつかを除外します)。この目的でイテレータを使用するのは便利な方法ですか?
私の現在の試みは
#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 へのポインタを返します)。これを行う正しい方法は何ですか? また、そのようなイテレータを実際にどのように使用するのでしょうか?どのように終了を決定できますか? または、イテレータを使用するよりも良いアプローチはありますか?