我对指针和迭代器不是很清楚,尤其是在从数组构造向量的情况下。
从关于vector的描述中,它说
// 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) );
主要是:
#include <vector>
int arr[ARR_LEN] = { /* Array elements */ };
std::vector<int> vecInt(arr, arr + ARR_LEN);
它使用以下构造函数吗?
template <class InputIterator>
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type());
如果是这样,那么这里是否将指针(用于数组)处理为随机访问迭代器,然后作为输入迭代器?编译器如何做到这一点?考虑来自其他容器的迭代器,这个迭代器的类型是什么,例如“array[int]”::iterator?
int arr[N] = {};
for (int i= 0; i<N; i++) {}
而不是上面的,我可以做如下的事情吗?
for (ItorType it=arr; it!=arr+N; ++it) { ... }