版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
使用copy函数或copy_backward函数有可能产生数组越界的可能,一定要将vector数组resize 好,然后再copy,否则就会崩溃。例子如下:
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <vector>
using namespace std;
int main()
{
vector <int> arr{1,2,3},target;
copy(arr.begin(),arr.end(),target.begin());
for(vector <int> ::iterator iter=target.begin();iter!=target.end();iter++)
cout<<*iter<<" ";
cout<<endl;
return 0;
}
必须先给target分配内存空间,不然程序会直接挂掉。使用target.resize(10);或者初始化时定义vector target(10);就可以了.
如果使用target.assign(arr.begin(), arr.end());则不需要首先为target分配内存。这也是copy和assign的一个不同的地方吧。