我知道这听起来很愚蠢,但是看看这个简单的例子(工作目录应该有多个项目):
#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
! (boost 1.45)什么考虑因素可以导致这样的设计(directory_iterator
是类似 smart ptr 的东西吗?
我只需要保存一份副本directory_iterator
以便稍后使用。
如果你看一下参考你会注意到它被广告为boost::single_pass_traversal_tag
.
这相当于(在升压术语中)输入迭代器在 STL 中(将其视为从网络连接传递数据包的迭代器,无法倒回)。
另请注意(来自同一页面):
i == j
并不意味着++i == ++j
.
说到这里,有人可能会奇怪为什么它可以被复制。原因是 STL 算法已经设定了通过复制获取参数的规范。因此,如果无法复制,则无法与 STL 算法一起使用。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)