我来自Java,我现在试图用C++初始化一个向量。我从this guy's answer找到了一个好方法。但是,我不知道它为什么起作用。为什么vector(begin,end)构造函数为这个初始化工作?
我抬头看了看documentation为载体的构造总结和发现这一点: screenshot http://i39.tinypic.com/2lvlouc.png
最后一个构造函数是在线程中使用的,且在此显示在我的代码:
#include "iostream"
#include "vector"
using namespace std;
int main()
{
static const int arr[] = {1, 2, 3};
vector<int> vec(arr, arr + sizeof(arr)/sizeof(arr[0]));
return 0;
}
如果begin是仅仅是c数组,并且end基本上是数组元素的数量,并且分配了内存,那么如何通过将元素从“begin”复制到“end”来初始化新矢量vec
到arr
。也许这个文档太模糊了,这很简单。有人可以至少指出我更好的文档?谢谢。
它处理指针和对待他们就像一个数组的开头和结尾。它所做的任何事情都是'++ foo'(或'foo ++'我想)和'* foo'。这适用于指针和迭代器。至于文档,我从来没有听说过,但我崇拜http://en.cppreference.com/w/cpp。它也[链接](http://en.cppreference.com/w/cpp/concept/InputIterator)符合'begin'和'end'类型的要求。 – chris
'begin' /'end'需要是迭代器,指针是迭代器 –
@BryanChen,它们至少具有随机访问迭代器的资格。 – chris