我在尝试构建向量时遇到错误
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*)'
Run Code Online (Sandbox Code Playgroud)std::vector<int> vv(std::begin(data), std::end(data + 10));
为什么我收到此错误?
你要因为错误+ 10,从而导致从衰减array of T到pointer 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)
...并且完全跳过使用数组.