正如我们所知,输出参数真的很糟糕
void foo(set<int> *x)
这里 x 实际上是预期的参数,这是 Linux 系统调用中很常见的做法。但是对于 c++,这似乎不是一个好的编码习惯。
我有一个场景,我必须通过字符串列表回溯,并从每个列表中返回所有可能的字符串组合。
a b
d e
f g
Possible combinations are:
a d f, a d g, a e f, a e g, etc...
list<list<string> > parameters;
一个简单的回溯解决方案是:
void getCombinations(list<list<string> > ¶m,
list<list<string> >::iterator it,
vector<string> &backtracker,
list<vector<string> > &output){
if(it == param.end()){
output.append(backtracker);
}
for(auto i = it->begin; i!= it->end(); i++){
backtracker.push_back(*i);
getCombinations(param, it+1, backtracker, output)
backtracker.pop_back();
}
}
现在,我怎样才能在这里避免输出参数,以便我可以返回输出列表?