2017-08-27 12 views
1

ご質問申し訳ありませんが、私はPythonとJSをあまりにも多く行っており、配列を割り当てるためにC++に戻ってきています。それはこれよりも簡単に行うことができますどのようにEasy C++配列の割り当て

float* d1 = (float*)calloc(4,sizeof(float)); 
d1[0] = 1; 
d1[1] = 2; 
d1[2] = 3; 
d1[3] = 4; 

私はd1 = [1,2,3,4]するために使用していますし、それのまわりで私の頭をラップすることはできません...

+3

':: std :: array d1 {1.0f、2.0f、3.0f、4.0f};' – VTT

+4

[C++で 'malloc'ファミリを使う理由はほとんどありません](https:///stackoverflow.com/questions/44588345/malloc-vs-new-for-primitives/44588567#44588567)。そうしないでください。 – StoryTeller

答えて

1

は、このコードを試してみてください:

float array[] = {1.0f,2.0f,3.0f,4.0f}; 

このコードは、4つの要素からなる単純な配列を作成します。初期化時には、配列は次の内容です:1,2,3,4。お役に立てれば 。

0

値は、簡単な方法は

std::array<float, 4> d1;      // or float d1[4] 
for (int i = 0; i < 4; ++i) d1[i] = i+1.0f; 

// or, instead of the loop, since C++11 

std::iota(std::begin(d1), std::end(d1), 1.0f); // iota() specified in <numeric> 

または(場合、実行時に値が生成されると仮定すると、ある

float d1[4] = {1.0f, 2.0f, 3.0f, 4.0f}; 

又は

std::array<float, 4> d1 {1.0f, 2.0f, 3.0f, 4.0f}; // since C++11 

コンパイル時に知られている場合実行時まで要素の数は分かりません)

std::vector<float> d1(number); 
for (int i = 0; i < number; ++i) d1[i] = i+1.0f; 

// or, instead of the loop, since C++11 

std::iota(d1.begin(), d1.end(), 1.0f); 
5

floatの配列を作成するには、次のオプションがあります。

オプション1

は、規則的な配列を使用してください。

float d1[] = {1.0f, 2.0f, 3.0f, 4.0f}; 

または

float d1[4] = {1.0f, 2.0f, 3.0f, 4.0f}; 

オプション2

使用std::array

std::array<float, 4> d1{1.0f, 2.0f, 3.0f, 4.0f} 

オプション3

使用std::vector

​​

強い理由がある場合を除き、std::arrayまたはstd::vectorを使用することを好みます。コンパイル時に配列のサイズが分かっている場合は、std::arrayが適切です。コンパイル時に配列のサイズがわからない場合は、std::vectorが適切です。

std::arrayまたはstd::vectorを使用する主な利点の1つは、変数が関数呼び出しで使用されているときに配列のサイズを調べることができることです。通常の配列を使用すると、配列はポインタに減衰します。関数は、範囲外インデックスを使用して配列にアクセスできないようにするには、別の引数でサイズを渡す必要があります。