私はこれに似た機能を持っています:
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() メソッド全体を呼び出しても、実行に時間がかかるため、この場合は役に立ちません。この場合、1 つの要素が見つかるとすぐに戻ることができます。フィルセットのコードを複製せずにこれをリファクタリングする簡単な方法はありますか? 私は次のようなことを考えていました:
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)
}
これについてどう思いますか?他のアイデアは大歓迎です