0

私たちが知っているように、出力パラメータは本当に悪いことです

 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> > &param, 
          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();
          }
         }

ここで、出力リストを返すことができるように、ここで出力パラメーターを回避するにはどうすればよいですか?

4

2 に答える 2