正如我們知道的輸出參數是非常糟糕的事情如何在回溯時避免輸出參數?
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();
}
}
現在,我怎樣才能避免在這裏輸出參數,這樣,我可以返回輸出列表?
*我們知道輸出參數是非常糟糕的事情*我們?你能否進一步解釋你的意思?你把什麼稱爲*輸出參數*,爲什麼它不好? –
有過這方面的討論,你可以參考http://stackoverflow.com/questions/18157090/how-to-avoid-the-copy-when-i-return/瞭解更多關於它! – innosam
因此,通過輸出參數表示傳遞可修改的引用或指針,對嗎?無論如何,在許多情況下,有些理由更願意按價值回報,但這並不意味着輸出參數會被抹黑。你仍然可以使用它們,如果在你的設計中它是有意義的,而且你已經有了它的實現,那就使用它。有些地方的輸出參數是由編碼準則規定的(例如,針對C++ 03編譯器的商店) –