【问题标题】:Search for item iterating through multiple lists搜索遍历多个列表的项目
【发布时间】:2013-04-18 22:04:02
【问题描述】:

我正在尝试遍历多个列表以查找“目录”。 如果我有一个目录结构,例如: /A/B/C

/A/D/F

如果我寻找 B 或 C,它似乎工作,但对于 D 和 F 失败。我认为这是因为当它遇到它正在搜索列表并且它没有找到正确的目录的情况时,然后它不知道要返回什么(或者如果我取消注释 return NULL 它返回 null,我不希望它这样做,因为这并不意味着它在技术上找不到)。

I.E.如果我搜索 F,它会搜索 A/B/C 并且不知道返回什么。

有没有办法在找到目录或完成查找之前推迟返回值?

Directory* search_tree_for_dir(string dir_name) {
            for(list<Directory*>::iterator iter = this->l_dir.begin(); iter != this->l_dir.end(); iter++) {
                  // Base case: if directory found then return
                  if((*iter)->name == dir_name){
                      return *iter;
                  }
                  if(*iter != NULL) { 
                      return (*iter)->search_tree_for_dir(dir_name);
                  }
              } 
              //return NULL;
          }

【问题讨论】:

标签: c++ list iterator


【解决方案1】:

您要做的是检查递归调用的返回值,看看它返回什么。例如:

Directory *ret = (*iter)->search_tree_for_dir(dir_name);
if (ret) {
    return ret;
}

这样,如果递归调用返回的不是NULL,您将传递它。如果它没有找到任何东西(即它返回NULL),那么你就不要传递它,而是继续搜索。

【讨论】:

    猜你喜欢
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-06
    • 1970-01-01
    • 2013-06-15
    • 1970-01-01
    相关资源
    最近更新 更多