18.4.1【STL常用拷贝和替换算法copy、swap】
1 #include<iostream> 2 #include<cstdlib> 3 using namespace std; 4 #include<algorithm> 5 #include<vector> 6 7 8 /* 9 5.4 常用拷贝和替换算法 10 copy // 容器内指定范围的元素拷贝到另一容器中 11 replace // 将容器内指定范围的旧元素修改为新元素 12 replace_if // 容器内指定范围满足条件的元素替换为新元素 13 swap // 互换两个容器的元素 14 15 5.4.1 copy 16 容器内指定范围的元素拷贝到另一容器中 17 copy(iterator beg, iterator end, iterator dest); 18 // 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置 19 // beg 开始迭代器 20 // end 结束迭代器 21 // dest 目标起始迭代器 22 利用copy算法在拷贝时,目标容器记得提前开辟空间 23 24 5.4.4 swap 25 互换两个容器的元素 26 swap(container c1, container c2); 27 // 互换两个容器的元素 28 // c1容器1 29 // c2容器2 30 swap交换容器时,注意交换的容器要同种类型 31 */ 32 33 34 void myprint(int val) 35 { 36 cout << val << " "; 37 } 38 39 40 void test541() 41 { 42 vector<int> v1; 43 for(int i=0; i<10; i++) 44 { 45 v1.push_back(i); 46 } 47 48 vector<int> v2; 49 v2.resize(v1.size()); //重点难点,不提前开辟空间会报错 50 51 copy(v1.begin(), v1.end(), v2.begin()); //效果同=赋值 52 53 for_each(v2.begin(), v2.end(), myprint); 54 cout << endl; 55 } 56 57 58 void test544() 59 { 60 vector<int> v1; 61 vector<int> v2; 62 for(int i=0; i<10; i++) 63 { 64 v1.push_back(i); 65 v2.push_back(i*100); 66 } 67 68 cout << "互换前:" << endl; 69 for_each(v1.begin(), v1.end(), myprint); 70 cout << endl; 71 for_each(v2.begin(), v2.end(), myprint); 72 cout << endl; 73 74 swap(v1, v2); 75 76 cout << "互换后:" << endl; 77 for_each(v1.begin(), v1.end(), myprint); 78 cout << endl; 79 for_each(v2.begin(), v2.end(), myprint); 80 cout << endl; 81 } 82 83 84 int main() 85 { 86 test541(); 87 test544(); 88 89 system("pause"); 90 return 0; 91 }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!