从数组构造向量
constructing vectors from arrays
这说明我可以从数组构造一个向量,如下所示:
// 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) );
为什么构造函数的第二个参数myints + sizeof(myints) / sizeof(int)
?
表达式 sizeof(myints) / sizeof(int)
获取 myints
数组中的元素数。
myints
获取指向数组第一个元素的指针。
因此,表达式 myints + sizeof(myints) / sizeof(int)
是一个经过 myints
数组末尾的指针,这是 std::vector
的双迭代器构造函数所期望的。这将创建一个向量,其中包含原始数组中所有元素的副本。
请记住,指针是迭代器,因此上述等效于
vector<int> myvector (std::begin(myints), std::end(myint));
它获取指向最后一个元素之后的 int 的指针。所以它变得像 begin() 和 end()
sizeof(myints) / sizeof(int)
是数组中元素的数量。
myints + sizeof(myints) / sizeof(int)
为您提供超过阵列末尾的内存位置。
STL 对第一个元素和"一个过去"元素使用迭代器来指定范围。矢量构造函数正在使用这样的范围。
相关文章:
- 如何在向量数组中插入元素?
- 不同大小的向量数组的大小 cpp
- 很好的语法来获取对向量/数组数据的大小引用?
- 指向 c++ 中的向量数组并将其发送到函数的指针
- 初始化向量数组,其中每个向量的大小为 0
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 如何使用结构体的向量数组?
- C++:向量数组
- 在C++中通过引用传递向量数组
- 向量数组"Cannot access memory at address"
- 构造不同类型的C++向量数组
- 向量数组的均值和众数 - 如何对函数进行较小的改进
- C++:初始化(新)一个不同初始大小的向量数组
- 五个中三个最大参数的平均值,不使用排序算法或向量/数组
- 销毁C++中的向量数组
- 继承向量/数组/列表并更改其大小
- 如何输出属于向量数组的结构字符串
- 如何通过引用传递向量数组
- 在向量数组中获得前五个最大的结果
- 为什么"new vector<int>[5]"不创建向量数组?