gpt4 book ai didi

c++ - 当不需要完整计算时从某种方法提前返回

转载 作者:行者123 更新时间:2023-11-30 01:58:09 25 4
gpt4 key购买 nike

我有一个类似的功能:

void fillset(std::set<int>& myset)
{

while(...) {
object[i]->fillset(myset);
}

if(...)
otherfillset(myset)

}

现在我注意到这个函数经常被这样使用:

bool isAllowed() {

std::set<int> myset;

fillset(myset);

return !myset.empty();


}

现在,调用整个 fillset() 方法对于这种情况是无用的,因为它需要一些时间来执行。在这种情况下,我可以在找到一个元素后立即返回。有没有一种简单的方法可以重构它而不必复制 fillset 的代码?我在想这样的事情:

template<bool return_as_soon_as_not_empty>

void fillset(std::set<int>& myset)
{

while(...) {
object[i]->fillset(myset);
if( return_as_soon_as_not_empty && !myset.empty()) {
return;
}
}

if(...)
otherfillset(myset)

}

您对此有何看法?欢迎任何其他想法

最佳答案

您真正想要做的是创建一个新函数 canFillSet() 并改为调用它。

所有“修复”fillSet() 方法的方法都会导致它做一些从其名称和签名中看不出来的事情 => 这些方法是通往灾难的道路,它们会在以下情况下导致错误程序稍后修改。

关于c++ - 当不需要完整计算时从某种方法提前返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17835759/

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