C++11 で配列 (c スタイルまたは std::array) からベクトルを初期化するさまざまな方法を見ました。例として、次のような配列があるとします:uint8_t arr[5000]
または次のような: std::array<uint8_t, 5000> arr;
。
arr から 5000 個の値が必要な場合は、次の方法で初期化できます。
std::vector<uint8_t> vect(arr, arr + 5000);
std::vector<uint8_t> vect(std::begin(arr), std::end(arr));
std::vector<uint8_t> vect(arr.begin(), arr.end());
これは arr がstd::array<uint8_t, 5000>
)の場合に適用されます
この回答によると、オプション 3 はオプション 1 および 2 よりも優れています。非メンバー関数の代わりにコンテナーのメンバー関数を使用することをお勧めします。
私は常に、C スタイル配列の最初のオプションを見てきました。オプション 1 はオプション 2 とまったく同じですか? その背後にある機微は何ですか?
ご協力いただきありがとうございます。