【问题标题】:Why is the c++ filesystem directory_iterator a LegacyIterator? [duplicate]为什么 c++ 文件系统 directory_iterator 是 LegacyIterator? [复制]
【发布时间】:2021-10-27 06:38:46
【问题描述】:

根据这里的文档,这个迭代器是一个 LegacyInputIterator,它是一个 LegacyIterator。现在,根据我对“遗产”含义的理解,它的意思是:

在计算中,遗留系统是一种旧的方法、技术、计算机 系统或应用程序,“属于、关于或以前的 或过时的计算机系统,”[1] 仍在使用中。- 维基百科

  1. 属于或属于旧的或过时的计算机硬件、软件或数据,虽然仍然可以正常工作,但不能很好地与最新版本一起使用 系统。 - 字典

所以在我的代码中通过一些文件夹进行迭代,我这样做:

std::filesystem::directory_iterator iter{ "c:/folder" };

while (iter != std::filesystem::directory_iterator{})
{
    // Do something with the file
    ++iter;
}

我只是想知道是否有更好或更新的方法来执行此操作,因为我怀疑我正在使用的迭代器使用术语 legacy。

【问题讨论】:

标签: c++ templates fold-expression


【解决方案1】:

LegacyIterator 是 C++ 标准的命名要求。 “Legacy”部分是在 C++20 中添加的,用于区分概念名称与先前标准对某些类型强加的未经检查的命名要求。

它只是某些类型所具有的一组要求的标准的旧名称。您可以放心使用。

【讨论】:

  • 如果我们称它们为“经典”迭代器,它们听起来会很酷。
猜你喜欢
  • 2012-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多