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 }
