首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量的C++初始化

向量的C++初始化
EN

Stack Overflow用户
提问于 2015-07-10 21:03:54
回答 3查看 383关注 0票数 2

有人能解释一下为什么我们可以这样初始化一个向量吗?int a[]={1,2,3,4,5}; std::vector<int> vec(a,a+sizeof(a)/sizeof(int));,我也知道这样做,这意味着std::vector<int> vec(5,0);有五个元素,它们都被初始化为0。但这两种方式并不相关。如何解释第一个。如果我们知道值,那么初始化向量的最佳方法是什么(大多数人使用的方法)。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-10 21:09:23

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

代码语言:javascript
复制
template <class InputIterator>
vector(InputIterator first, InputIterator last, const Allocator& = Allocator());

而这个宣言

代码语言:javascript
复制
std::vector<int> vec(a,a+sizeof(a)/sizeof(int));

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

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

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

代码语言:javascript
复制
std::vector<int> v { 1, 2, 3, 4, 5 };

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

票数 7
EN

Stack Overflow用户

发布于 2015-07-10 21:27:51

此外,您还可以使用:

代码语言:javascript
复制
int a[5]={1,2,3,4,5};
std::vector<int> vec;
for(int i=0; i<5: i++) vec.push_back(a[i]);
票数 0
EN

Stack Overflow用户

发布于 2015-07-10 21:49:21

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

从C++11开始工作。

请参阅:initialization

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31350236

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档