使用循环遍历目录

时间:2013-08-04 16:32:19

标签: c++ for-loop recursion directory-structure

我知道这个问题之前有过一些问题,但我有一个我想到的具体例子。 目前我有一段代码,虽然是伪代码,因为我不在我的工作终端:

void setTree(string dir) {
    add dir to dirlist
    create dir object //contains list of subdirs and files
    for subdir in dir.subs do
        setTree(subdir)
    end
}

这可能与for循环有关,因为在编译时你无法知道编译时会有多少个子目录。 伪代码很好或者有些解释或算法。我真的不需要任何东西,因为我最喜欢我的递归解决方案,但我真的想知道它是否可行。以及它背后的理论。

2 个答案:

答案 0 :(得分:2)

对于理论,请参见最高投票答案:Can every recursion be converted into iteration?

实际上:

void setTree(string dir) {
   add dir to dirlist
   while (dirlist not empty) {
   d = dirlist.pop()
   create d object
   for subdir in d.subs do
      append subdir to dirlist
   end
   }
}

我试图跟随你的伪代码的奇怪语法混淆,希望它仍然可读。

答案 1 :(得分:1)

这取决于dir类的设计。如果子目录保存在数组或列表中,则可以使用大小值作为for循环的最大值。该值将在运行时定义。如果保存了子目录,否则你必须使用while循环。

希望有所帮助 ChronosMOT