STL 迭代器
容器种类<元素类型>::iterator 对象名
容器种类<元素类型>::const_iterator 对象名
容器种类<元素类型>::reverse_iterator 对象名 //反向
容器种类<元素类型>::const_reverse_iterator 对象名 //反向
//*#include <iterator>*//
ostream_iterator<被发送到输出流的类型,输出流字符类型> 对象名(使用的输出流,"发送去每个数据后分隔符");
(ostream_iterator<int,char> iout (cout," ");) p617
istream_iterator<输入流的类型,输入流字符类型> 对象名(使用的输入流);
(istream_iterator<cin,char> 对象名 (cin);)//那个cin构造函数为空 表示输入失败 表示文件输入结尾
//************************************************************
copy();
copy(起始点,超尾点,被copy入的迭代)
//************************************************************
back_insert_iterator<容器种类<元素类型>> 对象名(对应容器的实例对象);
(配合算法copy插入到某容器对象尾)
ep:
vector<int> dice(5);
back_insert_iterator<vector<int> > iter_1 (dice);
front_insert_iterator<容器种类<元素类型>> 对象名(对应容器的实例对象);
(配合算法copy插入到某容器对象头)
insert_iterator<容器种类<元素类型>> 对象名(对应容器的实例对象,插入的位子迭代);
(配合算法copy插入到某容器指定位子)
//////////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////
//
//通用算法copy() 反向迭代veverse_iterator
//
///////////////////////////////////////////////////////////////
#include <iostream>
#include <iterator>
#include <vector>
int main()
{
using namespace std;
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()); //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); //copy(dice.begin(), dice.end(), out_iter);
cout << endl;
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; //vector<int>::reverse_iterator
for (ri = dice.rbegin(); ri != dice.rend(); ++ri)
cout << *ri << ' ';
cout << endl;
cin.get();
return 0;
}
///////////////////////////////////////////////////////////////////
//
//back_insert_iterator insert_iterator
//
//////////////////////////////////////////////////////////////////
// inserts.cpp -- copy() and insert iterators
#include <iostream>
#include <string>
#include <iterator>
#include <vector>
int main()
{
using namespace std;
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());
ostream_iterator<string, char> out(cout, " ");
copy (words.begin(), words.end(), out);
cout << endl;
// construct anonymous back_insert_iterator object
copy(s2, s2 + 2, back_insert_iterator<vector<string> >(words));
copy (words.begin(), words.end(), out);
cout << endl;
// construct anonymous insert_iterator object
copy(s3, s3 + 2, insert_iterator<vector<string> >(words, words.begin()+1));
copy (words.begin(), words.end(), out);
cout << endl;
return 0;
}