gpt4 book ai didi

c++ - 搜索遍历多个列表的项目

转载 作者:行者123 更新时间:2023-11-30 04:18:57 24 4
gpt4 key购买 nike

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

/A/D/F

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

即如果我搜索 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;
}

最佳答案

您要做的是检查递归调用的返回值,并查看返回的内容。例如:

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

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

关于c++ - 搜索遍历多个列表的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16093890/

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