如何将数组的成员传递给向量。如何从数组C++初始化向量
-1
A
回答
2
您可以用向量构造函数,两个迭代器,像这样初始化:
std::vector<chair> points(chairarray, chairarray + arraysize);
至于你的房子类的成员,你会做的是,在初始化列表:
house::house(int arraysize, chair* chairarray)
:points(chairarray, chairarray + arraysize)
{}
1
我可能会使用类似以下的东西:
points.insert(points.end(), chairarray, chairarray + arraysize);
(这是一个假设针对这样的chairarray
和points
元素的元素是一样的。)
你很可能因为段错误你正在试图修改的points
成员还不存在。例如,如果当前尺寸为points
为零,则不能设置points[0]
。
0
首先,段错误问题,就像@ md5i提到的那样,语句std::vector<chair> points;
是用默认构造函数初始化points
,所以大小为零。
有4种方法vector
容器初始化对象,这里有一些代码段形式STL源:
explicit vector(const allocator_type& __a = allocator_type())
: _Base(__a) {}
vector(size_type __n, const _Tp& __value,
const allocator_type& __a = allocator_type())
: _Base(__n, __a)
{ _M_finish = uninitialized_fill_n(_M_start, __n, __value); }
explicit vector(size_type __n)
: _Base(__n, allocator_type())
{ _M_finish = uninitialized_fill_n(_M_start, __n, _Tp()); }
vector(const vector<_Tp, _Alloc>& __x)
: _Base(__x.size(), __x.get_allocator())
{ _M_finish = uninitialized_copy(__x.begin(), __x.end(), _M_start); }
什么@Benjamin林德利所用的是最后一个,和points.insert(points.end(), chairarray, chairarray + arraysize);
是一种方法在vector
,所以许多方法来解决你的主要问题“初始化从数组向量”:)
+0
谢谢,这是很好的信息。 – Alex
0
你需要首先分配点的元素。只需添加一行:
house::house(int arraysize, chair* chairarray)
{
points.resize(arraysize); // add this
for(int i=0; i<arraysize; ++i)
{
points[i].x=chairarray[i].x;
points[i].y=chairarray[i].y;
}
}
通用副本也可以为您节省大量的打字:
points.resize(arraysize);
std::copy(chairarray, chairarray+arraysize, points.begin());
相关问题
- 1. 从C数组初始化ublas向量
- 2. 初始化向量数组
- 3. 如何加快向量初始化C++
- 4. 如何初始化C++中的静态向量数组成员
- 5. C++初始化向量
- 6. C++向量初始化
- 7. C++向量初始化
- 8. 如何初始化向量
- 9. 使用数组的向量初始化
- 10. C++初始化数组初始化向量时的分段错误
- 11. 二维数组向量满时如何初始化向量数组?
- 12. 如何初始化整数数组C#
- 13. 如何初始化pre-C++ 11语法中的向量向量?
- 14. 初始化向量
- 15. 向量初始化
- 16. 初始化向量
- 17. 初始化向量
- 18. 如何初始化矢量数组?
- 19. 初始化向量与变量,C++
- 20. C++类变量:初始化向量与
- 21. 如何初始化c中的数组?
- 22. 如何初始化数组在objective-c
- 23. C++如何初始化一个数组
- 24. C++ mpir:如何初始化mpz_t数组?
- 25. 初始化向量的元组类成员初始化列表
- 26. 初始化数组变量
- 27. C - 如何初始化一个预初始化的二维数组数组?
- 28. C#初始化数组
- 29. C数组初始化
- 30. C++数组初始化
请为'points'提供完整的声明。 – Olipro
'int values [] = {1,2,3}; std :: vector拷贝(std :: begin(values),std :: end(values));' –
p0pa
你是什么意思的“transfer”? – juanchopanza