我知道以下代码可以从数组中构建一个 stl 向量:
// the iterator constructor can also be used to construct from arrays:
int myints[] = {16,2,77,29};
std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );
(来源:cppreference)
使用的构造函数应该是
template <class InputIterator>
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type());
如果<class InputIterator>在上面的例子中是<int>,为什么InputIterator 首先不是一个整数指针?数组名“myints”衰减为指向第一个元素的指针,因为它等价于 &myints[0]
我认为正确的版本是
template <class InputIterator>
vector (InputIterator *first, InputIterator *last,
const allocator_type& alloc = allocator_type());