gpt4 book ai didi

vector 的 C++ 初始化

转载 作者:搜寻专家 更新时间:2023-10-30 23:55:27 24 4
gpt4 key购买 nike

谁能给我解释一下为什么我们可以用这种方式初始化 vector ?整数 a[]={1,2,3,4,5}; std::vector<int> vec(a,a+sizeof(a)/sizeof(int));我也知道这种方式std::vector<int> vec(5,0);意思是vec有五个元素,它们都初始化为0。但是这两种方式没有关系。第一个怎么解释。如果我们知道值,初始化 vector 的最佳方法是什么(大多数人使用的方法)。

最佳答案

类 std::vector 具有接受一对输入迭代器的构造函数

template <class InputIterator>
vector(InputIterator first, InputIterator last, const Allocator& = Allocator());

和这个声明

std::vector<int> vec(a,a+sizeof(a)/sizeof(int));

包括对构造函数的调用,其中 aa + sizeof(a)/sizeof(int)是两个随机访问迭代器,因为指针具有此类迭代器。

在这里aa + sizeof(a)/sizeof(int)是两个指针,指定从数组中获取的初始化器范围,用于创建类型为 std::vector<int> 的对象.

考虑到您还可以使用接受初始化列表的构造函数。例如

std::vector<int> v { 1, 2, 3, 4, 5 };

从 C++ 2011 开始支持此构造函数。

关于 vector 的 C++ 初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31350236/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com