12

方法を検討する

functionA (double[] arg)

次のように、二重配列をインラインで渡したい

functionA({1.9,2.8})

最初に配列を作成してから渡すのではなく、

double var[] = {1.0,2.0};
functionA(var);

これはC++で可能ですか?単純に聞こえますが、とにかく私の質問に関するヒントを見つけることができなかったので、私は疑わしくなりました:)。

4

3 に答える 3

11

これを行うことができます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ます。

于 2012-01-05T08:10:50.310 に答える
6

これは c++0x で動作します

void functionA(double* arg){
   //functionA
}

int main(){
    functionA(new double[2]{1.0, 2.0});
    //other code
    return 0;
}

new によって割り当てられたメモリが functionA() で削除されていることを確認する必要がありますが、失敗するとメモリ リークが発生します。

于 2012-01-05T08:10:16.957 に答える
3

を使用して C++11 で実行できますstd::initializer_list

void fun(std::initializer_list<double>);
// ...
fun({ 1., 2. });

C++03 では実行できません (そうしないと、十分なボイラープレートが必要になり、実行できなくなります)。

于 2012-01-05T08:10:30.160 に答える