forked from SilverMaple/STLSourceCodeNote
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path8_1_2_iterator-adapter.cpp
More file actions
51 lines (40 loc) · 1.66 KB
/
8_1_2_iterator-adapter.cpp
File metadata and controls
51 lines (40 loc) · 1.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
// file: 8iterator-adapter.cpp
#include <iterator> // for iterator adapters
#include <deque>
#include <algorithm> // for copy()
#include <iostream>
using namespace std;
int main() {
// 将outite绑定到cout,每次对outite指派一个元素,就后接一个“ ”
ostream_iterator<int> outite(cout, " ");
int ia[] = {0, 1, 2, 3, 4, 5};
deque<int> id(ia, ia + 6);
// 将所有元素拷贝到outite,即cout
copy(id.begin(), id.end(), outite);
cout << endl;
// 将ia[]的部分元素拷贝到id内,使用front_insert_iterator
// front_insert_iterator会将assign操作给push_front操作
// vector不支持push_front操作,所以不以vector做示范对象
copy(ia + 1, ia + 2, front_inserter(id));
copy(id.begin(), id.end(), outite);
cout << endl;
// 将ia[]的部分元素拷贝到id内,使用back_insert_iterator
copy(ia + 1, ia + 2, back_inserter(id));
copy(id.begin(), id.end(), outite);
cout << endl;
// 搜寻元素5所在位置
deque<int>::iterator ite = find(id.begin(), id.end(), 5);
// 将ia[]的部分元素拷贝到id内,使用insert_iterator
copy(ia + 1, ia + 2, inserter(id, ite));
copy(id.begin(), id.end(), outite);
cout << endl;
// 将所有元素逆向拷贝到outite
// rbegin()和rend()与reverse_iterator有关
copy(id.rbegin(), id.rend(), outite);
cout << endl;
// 将inite绑定到cin,将元素拷贝到inite,知道eos出现
istream_iterator<int> inite(cin), eos; // eos: end-of-stream
copy(inite, eos, inserter(id, id.begin()));
// 输入数字,停止时可以输入任意字符
copy(id.begin(), id.end(), outite);
}