2011-03-21 37 views
5

我知道这听起来很愚蠢,但看看这个简单的例子(工作目录应该有一个以上的项目):如何使升压副本::文件系统:: directory_iterator?

#define BOOST_FILESYSTEM_VERSION 3 
#include <boost/filesystem.hpp> 
#include <cassert> 

int main() 
{ 
    using namespace boost::filesystem; 
    directory_iterator it("./"); 
    directory_iterator it_copy = it; 
    ++it; 
    assert(it_copy != it); 
    return 0; 
} 

it_copyit一起修改! (提高1.45),可能会导致这样的设计有什么注意事项(directory_iterator是像智能PTR)?

我只需要保存的directory_iterator副本以后使用它。

回答

6

如果你看看reference你会发现它被广告为boost::single_pass_traversal_tag

这是STL中的Input Iterator的等效(在boost术语中)(将其视为从网络连接传递数据包的迭代器,不能倒回)。

还要注意(从同一页):

i == j并不意味着++i == ++j

在这一点上,人们可能会问为什么它可以被复制。其原因是,STL算法设置了规范的复制考虑他们的论点。因此,它不会与STL算法使用的,如果它不能被复制。

相关问题