-3

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

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

海合会输出:

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

 std::vector<int> vv(std::begin(data), std::end(data + 10));

为什么我收到此错误?

4

2 回答 2

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};

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

于 2013-10-14T23:14:35.867 回答
0

通常,std::end当您不知道大小时,您可以在数组上使用。std::end被定义为它会推断出大小并返回指向该偏移量的指针:

std::vector<int> v(begin(data), end(data));
于 2013-10-14T23:24:13.047 回答