stl中copy注意的地方

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_23350817/article/details/100097788

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

猜你喜欢

转载自blog.csdn.net/qq_23350817/article/details/100097788