gpt4 book ai didi

c++ - 如何复制 boost::filesystem::directory_iterator?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:49 25 4
gpt4 key购买 nike

我知道这听起来很愚蠢,但看看这个简单的例子(工作目录应该有多个项目):

#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 的拷贝以备后用。

最佳答案

如果你看一下 reference您会注意到它被宣传为 boost::single_pass_traversal_tag

这相当于(在 boost 术语中)Input Iterator在 STL 中(将其视为从网络连接传送数据包的迭代器,您无法倒带)。

另请注意(来自同一页面):

i == j does not imply that ++i == ++j.

说到这里,大家可能会疑惑为什么可以复制。原因是 STL 算法已经设定了通过复制获取参数的规范。因此,如果它不能被复制,它就不能用于 STL 算法。

关于c++ - 如何复制 boost::filesystem::directory_iterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5381309/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com