使用std :: begin()和std :: end()从数组构造向量

new*_*int -3 c++ stl c++11

我在尝试构建向量时遇到错误

int data[] = { 1, 2, 3, 4, 4, 3, 7, 8, 9, 10 }; // source
std::vector<int> vv(data, data + 10); // ok 
std::vector<int> vv(std::begin(data), std::end(data + 10)); // Error
Run Code Online (Sandbox Code Playgroud)

GCC输出:

main.cpp:59:61:错误:没有匹配函数来调用'end(int*)'

 std::vector<int> vv(std::begin(data), std::end(data + 10));
Run Code Online (Sandbox Code Playgroud)

为什么我收到此错误?

Jer*_*fin 9

你要因为错误+ 10,从而导致从衰减array of Tpointer to T.有一个std::end重载(引用)一个数组,但没有一个拿一个指针.

只需使用: std::vector<int> vv(std::begin(data), std::end(data));

或者,只需使用:

std::vector<int> vv{1, 2, 3, 4, 4, 3, 7, 8, 9, 10};
Run Code Online (Sandbox Code Playgroud)

...并且完全跳过使用数组.