-5

C++ で複数の値を返したいのですが、次のコード スニペットがあります。

struct returns
{  
   int row_locs, col_locs;  
   int row_descriptors, col_descriptors;  
   double **locs;  
   double **descriptors;  
};



void returns (int &row_locs, int &col_locs, int &row_descriptors, int &col_descriptors, double **locs, double **descriptors)
{  
   //make some changes in variables 
}  

問題は、「どちらがより多くの時間を消費するstructか、または参照による呼び出しか?」です。

4

2 に答える 2

5

どちらの場合も違いはごくわずかです。これらの問題が本当に問題であることがわかるまで、これらの問題について心配する必要はありません。簡単な答え: より好きな方法で行い、返された値を後でどのように使用するかなど、さまざまな側面を検討してください。

参照によって引数を渡す場合、それらは既にスタックまたは動的に割り当てられており、それらのポイントされた値は関数によって埋められます。すべてのポインターをスタックにコピーし、呼び出された関数のアドレスに格納するのに時間がかかります。

2 番目のケースでは、構造体全体がスタックに割り当てられ、埋められます (おそらく、構造体にない単一のコンストラクターによって)。オブジェクトをスタックに構築し、その値を埋めるのに時間がかかります。

于 2013-05-20T13:08:48.637 に答える