18.3.2【STL常用排序算法merge、reverse】

 1 #include<iostream>
 2 #include<cstdlib>
 3 using namespace std;
 4 #include<algorithm>
 5 #include<vector>
 6 
 7 
 8 /*
 9     5.3.3 merge
10         两个容器元素合并,并存储到另一容器中
11         merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest);
12         // 容器元素合并,并存储到另一容器中
13         // 注意: 两个容器必须是有序的
14         // beg1 容器1开始迭代器 // end1 容器1结束迭代器 // beg2 容器2开始迭代器 // end2 容器2结束迭代器 //
15         dest 目标容器开始迭代器
16         merge合并的两个容器必须的有序序列
17 
18     5.3.4 reverse
19         将容器内元素进行反转
20         reverse(iterator beg, iterator end);
21         // 反转指定范围的元素
22         // beg 开始迭代器
23         // end 结束迭代器
24         reverse反转区间内元素,面试题可能涉及到
25 */
26 
27 
28 void myprint(int val)
29 {
30     cout << val << " ";
31 }
32 
33 
34 void test533()
35 {
36     vector<int> v1;
37     vector<int> v2;
38     for(int i=0; i<10; i++)
39     {
40         v1.push_back(i);
41         v2.push_back(i+1);
42     }
43 
44     vector<int> v_target;
45     v_target.resize(v1.size() + v2.size());
46 
47     merge(v1.begin(), v1.end(), v2.begin(), v2.end(), v_target.begin());
48 
49     for_each(v_target.begin(), v_target.end(), myprint);
50     cout << endl;
51 }
52 
53 
54 void test534()
55 {
56     vector<int> v1;
57     for(int i=0; i<10; i++)
58     {
59         v1.push_back(i);
60     }
61 
62     cout << "反转前:" << endl;
63     for_each(v1.begin(), v1.end(), myprint);
64     cout << endl;
65 
66     reverse(v1.begin(), v1.end());
67 
68     cout << "反转后:" << endl;
69     for_each(v1.begin(), v1.end(), myprint);
70     cout << endl;
71 }
72 
73 
74 int main()
75 {
76     test533();
77     test534();
78 
79     system("pause");
80     return 0;
81 }

 

posted @ 2021-05-14 09:10  yub4by  阅读(42)  评论(0编辑  收藏  举报