注:本文不具有教学意义,仅作个人复习参考!
目录
1.1 反向插入迭代器:front_insert_iterator
1.2 前向插入迭代器:back_insert_iterator
1. 插入迭代器
前向插入:容器一定要有push_front()
后向插入:容器一定要有push_back()
1.1 反向插入迭代器:front_insert_iterator
1.2 前向插入迭代器:back_insert_iterator
1.3 插入迭代器:insert_iterator
int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
vector<int>vec(arr, arr + 10);
deque<int>deq(arr, arr + 10);
int brr[] = { 33,44,55,66,77 };
list<int>li(brr, brr+5);
//定义一个插入迭代器
insert_iterator<vector<int>> iterInsert(vec, vec.begin() + 3);
copy(li.begin(), li.end(), iterInsert);
for (int elem : vec) {
cout << elem << " ";
}
cout << endl;
//头插入迭代器
front_insert_iterator<deque<int>>front_it(deq);
copy(li.begin(), li.end(), front_it);
for (auto it : deq) {
cout << it << " ";
}
cout << endl;
//尾插入迭代器
back_insert_iterator<deque<int>>back_it(deq);
copy(li.begin(), li.end(), back_it);
for (auto it : deq) {
cout << it << " ";
}
cout << endl;
2. 反向遍历迭代器
//int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
vector<int>v1(arr, arr + 10);
vector<int>::reverse_iterator riter(v1.end());
cout << "反向迭代器的数据" << *riter << endl;
cout << "反向头迭代器的数据" << *v1.rbegin() << endl;
vector<int>::iterator pos1;
pos1 = find(v1.begin(), v1.end(), 6);
vector<int>::reverse_iterator rpos1(pos1);
cout << *pos1 << " " << *rpos1 << endl;
3. 流迭代器
ostream_iterator<string>out1(cout);
out1++ = "I";
out1++ = "love";
out1++ = "China";
ofstream outfile;
outfile.open("D:\\DesignPatterns\\Template_STL\\words.txt", ios::out);
ostream_iterator<string>out2(outfile, " ");
vector<string>v2;
v2.push_back("I");
v2.push_back("love");
v2.push_back("STL");
copy(v2.begin(), v2.end(), out2);