1

C++11 で配列 (c スタイルまたは std::array) からベクトルを初期化するさまざまな方法を見ました。例として、次のような配列があるとします:uint8_t arr[5000]または次のような: std::array<uint8_t, 5000> arr;

arr から 5000 個の値が必要な場合は、次の方法で初期化できます。

  1. std::vector<uint8_t> vect(arr, arr + 5000);

  2. std::vector<uint8_t> vect(std::begin(arr), std::end(arr));

  3. std::vector<uint8_t> vect(arr.begin(), arr.end());これは arr がstd::array<uint8_t, 5000>)の場合に適用されます

この回答によると、オプション 3 はオプション 1 および 2 よりも優れています。非メンバー関数の代わりにコンテナーのメンバー関数を使用することをお勧めします。

私は常に、C スタイル配列の最初のオプションを見てきました。オプション 1 はオプション 2 とまったく同じですか? その背後にある機微は何ですか?

ご協力いただきありがとうございます。

4

1 に答える 1