使用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的一个不同的地方吧。