从数组构造向量

Ale*_*xey 6 c++ stdvector

表明我可以从数组构造一个向量,如下所示:

// the iterator constructor can be used to construct from arrays:
int myints[] = {16,2,77,29};
vector<int> myvector (myints, myints + sizeof(myints) / sizeof(int) );
Run Code Online (Sandbox Code Playgroud)

为什么构造函数的第二个参数myints + sizeof(myints) / sizeof(int)

jua*_*nza 10

表达式 sizeof(myints) / sizeof(int)获取myints数组中的元素数.

myints 获取指向数组第一个元素的指针.

所以表达式myints + sizeof(myints) / sizeof(int)是一个超过myints数组末尾的指针,这是期望的双迭代器构造函数std::vector.这将创建一个带有原始数组中所有元素副本的向量.

请记住,指针是迭代器,所以上面等价于

vector<int> myvector (std::begin(myints), std::end(myint));
Run Code Online (Sandbox Code Playgroud)