c++ vector copy函数

1 template<class InputIterator, class OutputIterator>
2   OutputIterator copy (InputIterator first, InputIterator last, OutputIterator result)
3 {
4   while (first!=last) {
5     *result = *first;
6     ++result; ++first;
7   }
8   return result;

copy函数作用相当于上面的代码,刚开始用的时候并不能实现,上代码

1 int main()
2 {
3     vector<int> v = {1,2,3};
4     vector<int> cv ;
5     copy(v.begin(),v.end(),cv.begin());
6     for(auto a: cv)
7         cout<<a;
8     return 0;
9 }

根据函数模版发现,*result = *first; ++result;

原因是cv现在为一个空的容器,所以无法赋值,运行自然出现数组越界的问题。

1 int main()
2 {
3     vector<int> v = {1,2,3};
4     vector<int> cv(3) ;
5     copy(v.begin(),v.end(),cv.begin());
6     for(auto a: cv)
7         cout<<a;
8     return 0;
9 }

定义的时候为cv分配空间即可

时间: 2024-12-22 00:51:35

c++ vector copy函数的相关文章

C++ - 使用copy函数打印容器(container)元素

使用copy函数打印容器(container)元素 本文地址: http://blog.csdn.net/caroline_wendy C++可以使用copy函数输出容器(container)中的元素, 可以代替for循环. 头文件:  #include <algorithm> #include <iterator> 格式:  std::copy(cont.begin(), cont.end(),std::ostream_iterator<Type>(std::cout

copy函数与ostream_iterator、reverse_iterator

#include <iostream> #include <iterator> #include <vector> int main() { using namespace std; int casts[10]={6,7,2,9,4,11,8,7,10,5}; vector<int> dice(10); copy(casts,casts+10,dice.begin()); cout << "Let the dice be cast!\n

Copy 函数

函数原型:Unit System function Copy(S: string; Index, Count: Integer): string; 说明: S : 字符串. Indexd : 从第几位开始拷贝. Count : 总共要拷贝几位. 从母字符串拷贝至另一个字符串 返回值: 结果返回新字符串 Copy 函数

PHP copy() 函数

定义和用法 copy() 函数复制文件. 该函数如果成功则返回 TRUE,如果失败则返回 FALSE. 语法 copy(file,to_file) 参数 描述 file 必需.规定要复制的文件. to_file 必需.规定复制文件的目的地. 提示和注释 注释:如果目标文件已存在,将会被覆盖. 实例 <?php echo copy("source.txt","target.txt"); ?> 上面的 代码将输出: 1 「大理石平台精度」什么样的因素会影响大

C++ vector erase函数的使用注意事项

最近使用了顺序容器的删除元素操作,特此记录下该函数的注意事项. 在C++primer中对c.erase(p) 这样解释的:  c.erase(p)    删除迭代器p所指向的元素,返回一个指向被删元素之后元素的迭代器,若p指向尾元素,则返回尾后迭代器,若p是尾后迭代器,则会产生未定义行为. 这个函数我在使用的过程中发现有那么一点小小的注意事项 如果要想遍历一个容器,并且删除某个不符合要求的元素,那么最好使用while而不是使用for 因为 vector<RotatedRect>::iterat

vector作为函数返回值

在实际的操作中,我们经常会碰到需要返回一序列字符串或者一列数字的时候,以前会用到数组来保存这列的字符串或者数字,现在我们可以用vector来保存这些数据.但是当数据量很大的时候使用vector效率就比较低了,还有千万别返回引用, 因为你是再函数中定义的vector.一般要将vector作为返回值的话,我们可以这样来实现,我们将它放入函数参数中,添加引用,作为保存数据的容器.例子: 原始的: vector<int> fun1(int num): 更好的处理方法: bool fun1(int nu

vector成员函数解析

vector线性集装箱,其元素颜格排序根据线性序列,和动态数组很阶段似,像阵列,它的元素被存储在连续的存储空间,这也意味着,我们不仅能够使用迭代器(iterator)访问元素,也可以用一个指针访问偏移,和它不一样规则阵列,vector存储元件可以是自己主动,可以扩大和缩小自己主动的存储空间, vector优势: 1.       使用下标訪问个别的元素 2.       迭代器能够依照不同的方式遍历容器 3.       能够在容器的末尾添加或删除元素 和数组相比,尽管容器在自己主动处理容量的大

vector作为函数返回类型

#include <vector> #include <iostream> using namespace std; vector<int> fun1(int num) { vector<int> values; for (int j = 0; j < num; j++) { values.push_back(j); } return values; } int main() { vector<int> myvector; int i; c

delphi中的copy函数和pos函数

1.copy('csdn',1,2) 返回的结果是 cs 注释: Copy有3个参数,第一个是要处理的字符串,第二个是要截取的开始位置,第三个是截取位数 当第三个参数大于字符长度,那么效果就是取开始位置 后的所有字符 2.Pos('3','123456') 返回的结果是 3 注: 取出子串在父串中第一次出现的位置