我在 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>
)
根据this answer,选项3优于选项1和2。最好使用容器的成员函数而不是非成员函数。
我总是看到 c 样式数组的第一个选项。选项 1 是否与选项 2 完全相同?这背后有什么微妙之处?
谢谢你的帮助。