编程第六十、六十一天
来源:互联网 发布:ipc软件 编辑:程序博客网 时间:2024/04/28 06:15
c++ copy()对不同容器复制;关于输出区间与输入区间重叠的讨论
- #include <iostream>
- #include <algorithm>
- #include <deque>
- using namespace std;
- template<class T>
- struct display
- {
- void operator()(const T &x)const
- {
- cout<<x<<" ";
- }
- };
- int main()
- {
- //以下复制区间没有问题
- int ia1[]={0,1,2,3,4,5,6,7,8};
- copy(ia1+2,ia1+7,ia1);//将下标2-6复制给 1-5
- for_each(ia1,ia1+9,display<int>()); //2,3,4,5,6,5,6,7,8
- cout<<endl;
- //输出区间的起点与输入区间重叠,可能会有问题。但本例copy采用memmove()执行实际复制操作
- int ia2[]={0,1,2,3,4,5,6,7,8};
- copy(ia2+2,ia2+7,ia2+4);//将下标2-6复制给 4-8
- for_each(ia2,ia2+9,display<int>()); //0,1,2,3,2,3,4,5,6
- cout<<endl;
- //以下复制区间没有问题
- int ia3[]={0,1,2,3,4,5,6,7,8};
- deque<int> id(ia3,ia3+9);
- deque<int>::iterator first=id.begin();
- deque<int>::iterator last=id.end();
- deque<int>::iterator result=id.begin();
- ++++first;
- cout<<*first<<endl;
- ----last;
- cout<<*last<<endl;
- cout<<*result<<endl;
- copy(first,last,result);
- for_each(id.begin(),id.end(),display<int>());//2,3,4,5,6,5,6,7,8
- cout<<endl;
- //以下复制区间存在问题,由于实际复制没有采用memove(),结果错误
- int ia4[]={0,1,2,3,4,5,6,7,8};
- deque<int> ide(ia4,ia4+9);
- deque<int>::iterator first1=ide.begin();
- deque<int>::iterator last1=ide.end();
- deque<int>::iterator result1=ide.begin();
- advance(result1,4);//注意这里跟上面不一样
- ++++first1;
- cout<<*first1<<endl;
- ----last1;
- cout<<*last1<<endl;
- cout<<*result1<<endl;
- copy(first1,last1,result1);
- for_each(ide.begin(),ide.end(),display<int>());// 0,1,2,3,2,3,2,3,2不是预期的 0,1,2,3,2,3,4,5,6
- cout<<endl;
- return 0;
- }
阅读全文
0 0
- 编程第六十、六十一天
- 第六十一天学习笔记
- C#高级编程六十一天----LINQ中的扩展方法
- 编程第六十九天
- 拓胜第六十一天(请假)
- 171225-C++第一章复习【连续第六十一天】
- 编程第六十七、六十八天
- 【1701H1】【穆晨】【171210】连续第六十一天总结
- C#高级编程六十三天----并行LINQ
- C#高级编程六十五天----表达式树
- C#高级编程六十八天---LINQ小结
- C#高级编程六十九天----DLR简介
- 1613-3-傅溥衍 总结《2016年11月30日》【连续第六十一天总结】
- 1619-7 张良 十一月三十号总结 [连续第六十一天]
- JAVA学习笔记(六十)- 网络编程登录实例
- C#高级编程六十天----LINQ的概述
- C#高级编程六十七天----LINQ提供程序
- shell编程---第一天
- 讲解一下ThinkPHP的关联模型
- hibernate学习笔记05----离线查询
- 3A算法
- 【CSS控制鼠标样式cursor】
- sizeof知识点
- 编程第六十、六十一天
- 二叉树遍历
- Unity5.6新功能High-level NavMesh之组件介绍
- const、define、typedef的区别
- codevs 1250 Fibonacci数列(矩阵快速幂)
- 编程第六十二天
- gcc对C++ Standards的支持
- 1
- [一天几个linux命令] cat