我知道这听起来很愚蠢,但请看这个简单的例子(工作目录应该有多个项目):
#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_copy
与it
一起修改! (提升1.45)可能导致这种设计的因素(directory_iterator
就像智能ptr一样)?
我只需保存directory_iterator
的副本即可在以后使用。
答案 0 :(得分:6)
如果你看一下reference,你会发现它被宣传为boost::single_pass_traversal_tag
。
这是STL中Input Iterator的等效(在升级术语中)(将其视为从网络连接传递数据包的迭代器,您无法倒带)。
另请注意(来自同一页):
i == j
并不意味着++i == ++j
。
此时,人们可能想知道为什么可以复制它。原因是STL算法通过复制设置了他们的参数。因此,如果无法复制,则无法使用STL算法。