directory_iterator-复制到“倒带”吗?

| 所以我写了一个小程序来尝试Boost Filesystem。我的程序将写入当前路径中有多少个文件,然后是文件名。 这是我的程序:
#include <iostream>
#include <boost/filesystem.hpp>

using namespace boost::filesystem;

int main(){
    directory_iterator start = directory_iterator(current_path());
    directory_iterator di = start;
    int count;
    for (count = 0; di != directory_iterator(); ++di, ++count);
    std::cout << std::endl << \"total number of files: \" << count << std::endl;
    di = start;
    for (; di != directory_iterator(); ++di){
        std::cout << *di << std::endl;
    }
    return 0;
}
现有文件为program.exe,.ilk和.pdb 但是我得到以下输出(为简洁起见,省略了整个路径):   $ program.exe   文件总数:3   [..] / program.pdb   断言失败:m_imp-> m_handle!= 0 && \“内部程序错误\”,文件c:\\ program files \\ boost \\ boost_1_44 \\ boost \\ filesystem \\ v2 \\ operations.hpp,第1001行 如果我执行一个新的directory_iterator,它将正常工作:
di = start;
// .. becomes ..
di = directory_iterator(current_path());
我注意到一个与directory_iterators有关的类似问题,但我不知道他们指的是什么,或者是否是同一问题。 问题是: 为什么我不能保存一个初学者,然后用它倒带我的迭代器?     
已邀请:
        这是同样的问题。 目录迭代器是一遍迭代器。您无法保存副本并再次通过。每次增加迭代器时,您都会获得下一个条目,但是即使您已保存起点的副本,也无法减少它,也不能返回并重新开始。 如果要遍历两次,则需要创建另一个迭代器(并冒文件数量已更改的风险)。     

要回复问题请先登录注册