有人可以向我解释为什么我们可以用这种方式初始化向量? int a[]={1,2,3,4,5}; std::vector<int> vec(a,a+sizeof(a)/sizeof(int));
我也知道这种方式std::vector<int> vec(5,0);
意思vec有五个元素,它们都被初始化为0.但这两种方式是不相关的。如何解释第一个。如果我们知道这些值,那么最好的方法(大多数人使用什么)来初始化矢量。C++初始化向量
Q
C++初始化向量
2
A
回答
7
类的std ::矢量具有构造接受一对输入迭代器
template <class InputIterator>
vector(InputIterator first, InputIterator last, const Allocator& = Allocator());
这声明
std::vector<int> vec(a,a+sizeof(a)/sizeof(int));
包括构造的呼叫,其中a
和a + sizeof(a)/sizeof(int)
两种随机访问迭代因为指针有这种类型的迭代器。
这里a
和a + sizeof(a)/sizeof(int)
是两个指针,指定从std::vector<int>
类型创建的对象的数组中取得的初始值设定项的范围。
考虑到您也可以使用接受初始值设定项列表的构造函数。例如
std::vector<int> v { 1, 2, 3, 4, 5 };
此构造支持从C++ 2011
+0
谢谢你的解释! – daydayup
0
开始你也可以使用:
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
谢谢!这个更容易理解 – daydayup
0
std::vector<int> a = {1,2,3,4,5};
作品的C++ 11。
参见: http://en.cppreference.com/w/cpp/language/list_initialization
相关问题
- 1. C++向量初始化
- 2. 初始化向量
- 3. 初始化向量
- 4. 初始化向量
- 5. 初始化向量与变量,C++
- 6. 矢量初始化向量
- 7. 如何加快向量初始化C++
- 8. C++中的向量初始化
- 9. 从C数组初始化ublas向量
- 10. 初始化向量数组
- 11. 初始化静态向量
- 12. 初始化向量与INTS
- 13. 对初始化的向量
- 14. 初始化向量异常
- 15. GLM向量初始化
- 16. 如何初始化向量
- 17. 如何初始化pre-C++ 11语法中的向量向量?
- 18. 初始化一个向量的向量<doubles> C++
- 19. C#初始化变量
- 20. C#:初始化类变量
- 21. C++矢量动初始化
- 22. 初始化向量的元组类成员初始化列表
- 23. 将2d向量初始化为类变量C++
- 24. 向图初始化
- 25. C++初始化
- 26. c#初始化
- 27. C++ - 初始化与骨料初始化
- 28. 密码学初始化向量
- 29. 对象向量的初始化
- 30. 初始化向量应该隐藏吗?
'的std ::矢量 X = {1,2,3};'工作得很好我。获得一个更新的编译器。 –
可能的重复[什么是最简单的方式来初始化一个std ::向量与硬编码元素?](http://stackoverflow.com/questions/2236197/what-is-the-easiest-way-to-initialize-a -stdvector-with-hardcoded-elements) –
谢谢。它看起来像只有C++ 11或更新版本支持这种方式 – daydayup