boost::filesystem::directory_iterator 是否因删除而失效?

2024-01-22

我正在遍历一个目录,当某个项目符合某些条件时,我将其删除。我可以在循环内安全地执行此操作,还是必须将路径保存在数组中并稍后删除?

我没有找到相关信息boost::文件系统文档 http://www.boost.org/doc/libs/1_52_0/libs/filesystem/doc/index.htm.


引用附注的第一部分boost::filesystem::directory_iterator 的文档 http://www.boost.org/doc/libs/1_54_0/libs/filesystem/doc/reference.html#Class-directory_iterator(重点是我自己的):

执行目录迭代的程序可能希望测试通过取消引用目录迭代器获得的路径是否确实存在。它可能是指向不存在文件的符号链接。程序递归地遍历目录树以删除并重命名entries可能希望避免遵循符号链接。

我清楚地意识到,为了删除文件而迭代目录是官方支持的用例,因此不会使迭代器失效。另外,引用该注释的第二部分:

如果在构建目录的 Directory_iterator 之后从目录中删除文件或将文件添加到目录中,则未指定迭代器的后续递增是否会导致其值是已删除或添加的目录条目的迭代器。请参阅 ISO/IEC 9945 readdir_r()。

这是关于在目录上迭代时是否会出现已删除文件的非常具体的声明。再次,我明白迭代过程本身在任何情况下仍然有效。

注意ISO/IEC 9945 http://pubs.opengroup.org/onlinepubs/000095399/functions/readdir_r.html有类似的措辞。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

boost::filesystem::directory_iterator 是否因删除而失效? 的相关文章

随机推荐

  • 只有 1 个虚拟继承的钻石问题

    这还能解决钻石问题吗 class A class B virtual A class C A class D B C Edit 如果不是 那是什么 和这个一样吗 class A class B A class C A class D B C
  • 如何设置代码以便在文本框中单击鼠标输入信息? [关闭]

    Closed 这个问题需要细节或清晰度 help closed questions 目前不接受答案 在 Visual Basic 2010 中 我有两个文本框和一个数字键盘 每次我单击一个数字时 该数字都会显示在两个文本框中 我该如何做到这
  • Visual Studio 2010 的源代码大纲窗口

    对于 Visual Studio 2008 有一个小而伟大的插件 源大纲 on Codeplex http sourcecodeoutliner codeplex com http sourcecodeoutliner codeplex c
  • SVG Batik 根元素命名空间与请求的不匹配

    几周前 它在我的 SVG 上运行得很好 但不知何故它停止了工作 我不知道原因 因为在服务器上触发的错误没有帮助 当我将 svg 文件传输到 pdf 时会发生这种情况 Root element namespace does not match
  • 如何在关闭弹出窗口时调用函数

    我正在调用Javascriptwindow open 函数在弹出窗口中加载另一个 url 当用户关闭弹出窗口时 我想要MyThanks 要调用的函数 我怎样才能做到这一点 我的脚本
  • WTF form.validate_on_submit() 不起作用

    我有以下代码 并且正在提交表单 当我点击提交按钮时 我的表单验证会打印出来False 我已经检查并确保我包含了不同帖子中的所有内容 但我无法对其进行验证 我做错了什么吗 app route index html methods GET PO
  • 如何将 Javascript 对象键大写?

    有人知道有什么好的方法可以扭转这个吗 var obj key1 value1 key2 value2 key3 value3 key4 value4 into var obj Key1 value1 Key2 value2 Key3 val
  • 如何向 SQLite 3 表中插入多行? [复制]

    这个问题在这里已经有答案了 在 MySQL 中我会使用 INSERT INTO mytable col1 col2 VALUES 1 aaa 2 bbb 但这会导致 SQLite 中出现错误 SQLite 的正确语法是什么 之前已经在这里回
  • 使用 ES6 装饰器时出现意外的标记“@”

    我有一个 React 项目设置 我正在尝试将 MobX 合并到其中 这样我就必须使用装饰器 即 observable 当我这样做时 我收到以下错误 https github com mobxjs mobx https github com
  • 隐藏 Web API 响应的属性

    我想隐藏Modifiedby Modifieddate and Createddate来自 Web API 响应的属性 我尝试使用 JsonOgnore IgnoreDataMember 但没有工作 ModelMetadataType ty
  • 为什么 Visual Studio 不允许我在 enable_if 中使用模板化的 constexpr 函数?

    因此 我将其归结为最小的 完整的 可验证的示例 并且 Visual Studio 2015 似乎不允许我使用模板化的 constexpr函数在一个enable if 例如 template
  • 使用 AutoFixture 创建递归数据结构的固定装置

    我正在开发一个项目 其中有一些递归数据结构 我想为其创建一个固定装置 数据结构是XmlCommandElement 它有一个单一的方法ToCommand转换XmlCommandElement to Command 树上的每个节点都可以是Xm
  • 如何在迭代字典时从字典中删除项目?

    我可以在迭代 Python 字典时删除其中的项目吗 我想从字典中删除不满足特定条件的元素 而不是创建一个全新的字典 以下是一个好的解决方案 还是有更好的方法 for k v in mydict items if k val del mydi
  • PHP DateInterval 与 DateTime 具有可比性吗?

    我发现 PHP 中的 DateTime 对象可以与另一个对象进行比较 因为 gt 和 和 DateInterval 一样吗 当我试图回答这个问题时 我发现了一些奇怪的事情
  • wx.Python:在多个面板之间传递控制

    我是 wxPython 的新手 并且研究过类似的问题 但无法具体找到我的问题的答案 我正在创建两个带有分离器的面板 每个面板都有许多小部件 我希望一个面板中的小部件控制另一个面板的某些属性 反之亦然 在这个例子中 我试图改变背景RightP
  • ReLU 没有学习处理负输入 Keras / Tensorflow

    我希望我的神经网络将负值转换为正值 理论上 这可以使用 ReLU 函数和 1 个节点来完成 该节点将输入权重学习为 1 因此负输入乘以 1 正输入 它只是继续输出 0 代码如下 我使用 1 作为输入值 看看它是否可以至少在单个输入上进行学习
  • 更改我的项目文件不会更改 Docker 计算机内的文件

    我正在尝试使用 Docker 来改进我的工作流程 我安装了 适用于 Windows 的 Docker 工具箱 https docs docker com engine getstarted step one 在我的 Windows 10 家
  • 在Python中,可以在不使用继承的情况下实现mixin行为吗?

    Python 中是否有一种合理的方法来实现类似于 Ruby 中的 mixin 行为 即不使用继承 class Mixin object def b self print b def c self print c class Foo obje
  • JavaPlot 和 gnuplot

    我正在拼命地努力让 Java 和 gnuplot 更好地发挥作用 我已经开始使用JavaPlot并将 jar 添加到类路径 使用 Eclipse 我还下载了 gnuplot 并将其放在安全的地方 第一个问题 所有例子都由JavaPlot假设
  • boost::filesystem::directory_iterator 是否因删除而失效?

    我正在遍历一个目录 当某个项目符合某些条件时 我将其删除 我可以在循环内安全地执行此操作 还是必须将路径保存在数组中并稍后删除 我没有找到相关信息boost 文件系统文档 http www boost org doc libs 1 52 0