B
既に定義されており、C++ コードのどこかで使用されている配列があるとします。A
ここで、定義および初期化された別の配列があるとします。f
変換する関数A
(FFT など) を作成し、変換の結果を に割り当てたいB
(もちろん、 の変換に続いて、A
そのB
値が変更されます)。私は構文を維持することによってそれをすべてやりたい
B=f(A);
つまり、 のアドレスをB
引数としてに渡さないでくださいf
。出来ますか:
- 一時的な作成なしで?
- 一時的なものを作成しますが、メモリリークはありませんか?
ありがとうございました。
編集:以下の回答で提供されるソリューションの概要
RiaD、James Kanze、Shahbaz、Razispio の回答に感謝します。
私が求めているのは、効率A
とB
効果を得るために、配列クラスのオブジェクトであることが必要です。また、コピー コンストラクタを備えた配列クラスなどの「標準」実装では、次のような構文B=f(A);
では一時変数の作成が必要になります。ただし、多くのコンパイラは余分なテンポラリを省略できるため、テンポラリは必ずしも制限ではないことに注意してください。これとは反対に、次のような構文f(A,B);
は一時的なものを避けます。式テンプレートを使用したソリューションではB=f(A);
、内部で を使用しながら構文を有効にf(A,B);
し、一時変数の使用を無視できるようにします。効率的な代替ソリューションは、移動代入演算子を使用することです。例を参照してください
詳細については、以下の回答をご覧ください。