我正在使用基于范围的 for 循环来使用迭代器读取(和解析)文件。我的循环如下所示:
for (auto record : reader) {
if (even)
record.reverse_complement();
cout << record.write();
even = !even;
}
我已将输出添加到迭代器的构造函数和析构函数,看起来析构函数在 for 循环的每次迭代中由 end() 返回的迭代器上被调用。
calling fq_iter FULL constructor
calling fq_iter default constructor
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_iter destructor on 0
calling fq_reader destructor on 0
这些是我用来解析和迭代文件的类,知道为什么每次迭代都会调用析构函数吗?(除此之外,它会产生正确的输出)。