stl中copy注意的地方

简介: stl中copy注意的地方

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

相关文章
|
3月前
|
算法 C++ 容器
C++标准库中copy算法的使用
C++标准库中copy算法的使用
27 1
|
3月前
|
C++
【Bug记录】STL-vector不是模板
【Bug记录】STL-vector不是模板
|
5月前
|
编译器 C++ 容器
【C++进阶】深入STL之vector:深入研究迭代器失效及拷贝问题
【C++进阶】深入STL之vector:深入研究迭代器失效及拷贝问题
163 0
|
6月前
|
编译器 C++
【C++进阶(三)】STL大法--vector迭代器失效&深浅拷贝问题剖析
【C++进阶(三)】STL大法--vector迭代器失效&深浅拷贝问题剖析
|
6月前
|
C++ 容器
STL中会用到的函数
这段代码示例展示了C++中几种常用容器的使用,包括`vector`、`list`、`map`、`queue`、`deque`和`stack`。它涵盖了初始化、操作方法如添加、删除元素、排序、查找以及容器属性的查询等。同时,还提到了`algorithm`库中的`erase`、`sort`和边界查找函数。
31 0
|
存储 C++ 索引
【C++STL基础入门】深入浅出string类的比较(compare)、复制(copy)
【C++STL基础入门】深入浅出string类的比较(compare)、复制(copy)
244 1
|
算法 C++ 开发者
8.1 C++ STL 变易拷贝算法
C++ STL中的变易算法(Modifying Algorithms)是指那些能够修改容器内容的算法,主要用于修改容器中的数据,例如插入、删除、替换等操作。这些算法同样定义在头文件 `<algorithm>` 中,它们允许在容器之间进行元素的复制、拷贝、移动等操作,从而可以方便地对容器进行修改和重组。
78 0
|
算法 C++ 容器
STL算法篇之拷贝修改类算法
STL算法篇之拷贝修改类算法
|
存储 算法 安全
初阶C++——STL——string类、vector类和list类(使用方法+模拟实现+测试+思路分析)
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。
360 0
初阶C++——STL——string类、vector类和list类(使用方法+模拟实现+测试+思路分析)
|
分布式计算 Java Hadoop
HDFSAPI编程源码-文件本地拷贝
HDFSAPI编程源码-文件本地拷贝