方法を検討する
functionA (double[] arg)
次のように、二重配列をインラインで渡したい
functionA({1.9,2.8})
最初に配列を作成してから渡すのではなく、
double var[] = {1.0,2.0};
functionA(var);
これはC++で可能ですか?単純に聞こえますが、とにかく私の質問に関するヒントを見つけることができなかったので、私は疑わしくなりました:)。
方法を検討する
functionA (double[] arg)
次のように、二重配列をインラインで渡したい
functionA({1.9,2.8})
最初に配列を作成してから渡すのではなく、
double var[] = {1.0,2.0};
functionA(var);
これはC++で可能ですか?単純に聞こえますが、とにかく私の質問に関するヒントを見つけることができなかったので、私は疑わしくなりました:)。
これを行うことができますstd::initializer_list<>
#include<vector>
void foo(const std::initializer_list<double>& d)
{ }
int main()
{
foo({1.0, 2.0});
return 0;
}
指定されたg ++の下でコンパイルして動作し-std=c++0x
ます。
これは c++0x で動作します
void functionA(double* arg){
//functionA
}
int main(){
functionA(new double[2]{1.0, 2.0});
//other code
return 0;
}
new によって割り当てられたメモリが functionA() で削除されていることを確認する必要がありますが、失敗するとメモリ リークが発生します。
を使用して C++11 で実行できますstd::initializer_list
。
void fun(std::initializer_list<double>);
// ...
fun({ 1., 2. });
C++03 では実行できません (そうしないと、十分なボイラープレートが必要になり、実行できなくなります)。