不同容器间操作,与显示屏间操作,反转操作等。
copy(): 接收三个参数,前两个迭代器参数表示要复制的范围,最后一个迭代器参数表示要将第一个元素复制到什么位置。
//copy() and iterators
#include<iostream>
#include<iterator>
#include<vector>
using namespace std;
int main()
{
int casts[10] = { 6,7,2,9,4,11,8,7,10,5 };
vector<int> dice(10);
//copy from array to vector
copy(casts, casts + 10, dice.begin());
cout << "Let the dice be cast!\n";
//create an ostream iterator
ostream_iterator<int, char>out_iter(cout, " ");
//copy from vector to output
copy(dice.begin(), dice.end(), out_iter);
cout << endl;
//reverse 反序
cout << "Implicit use of reverse iterator.\n";
copy(dice.rbegin(), dice.rend(), out_iter);
cout << endl;
cout << "Explicit use of reverse iterator.\n";
vector<int>::reverse_iterator ri;
for (ri = dice.rbegin();ri != dice.rend();++ri)
cout << *ri << " ";
cout << endl;
system("pause");
return 0;
}
三种插入迭代器:
back_insert_iterator: 将元素插入到容器尾部
front_insert_iterator: 将元素插入到容器前端
insert_iterator: 将元素插入到指定位置前面
//insert
#include<iostream>
#include<string>
#include<iterator>
#include<vector>
#include<algorithm>
using namespace std;
void output(const string& s) { cout << s << " "; }
int main()
{
string s1[4] = { "fine","fish","fashion","fate" };
string s2[2] = { "busy", "bats" };
string s3[2] = { "silly","singers" };
vector<string> words(4);
copy(s1, s1 + 4, words.begin());
for_each(words.begin(), words.end(), output);
cout << endl;
//construct anonymous back_insert_interator object
//不会存在内存溢出的问题
copy(s2, s2 + 2, back_inserter<vector<string>>(words));
for_each(words.begin(), words.end(), output);
cout << endl;
//construct anonymous insert_iterator object
copy(s3, s3 + 2, insert_iterator<vector<string>>(words, words.begin()));
for_each(words.begin(), words.end(), output);
cout << endl;
system("pause");
return 0;
}