当我尝试将固定大小的数组复制到默认构造的向量时,我得到了一个段错误。我很困惑,因为我一直认为矢量是灵活的容器,可以根据它们吸收的动态数据调整它们的大小。如果我在编译时为复制工作分配空间,但是如何在编译时不将大小分配给向量而将该数组复制到向量中?
int numbersArr[] {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
vector<int> NumbersVec; //Default constructor
// vector<int> NumbersVec(10); If I allocate the memory in compile time it works
copy(numbersArr, numbersArr + 10, NumbersVec.begin()); //Segmentation fault (core dumped)
答案 0 :(得分:3)
目标数组需要有足够数量的元素作为源。因此,请根据需要使用以下内容添加新元素。
#include <iterator>
copy(numbersArr, numbersArr + 10, back_inserter(NumbersVec));
`