1、Insert iterators 安插型迭代器
可使算法以安插方式而非覆写方式运作。可以解决算法的“目标空间不足”的问题。
安插型迭代器又有三类:
I、Back inserters 安插于容器尾端
内部调用push_back,在尾端插入元素。可用的容器有三种:vector、deque、list。back_inserter(container)
II、Front inserters 安插与容器前端
内部调用push_front,将元素安插于容器前端,这种动作逆转了被安插元素的次序。可用的容器deque和list。front_inserter(container)
III、General inserters 一般性安插器
作用是将元素插入“初始化时接受之第二参数”所指位置的前方。内部调用insert()成员函数,并以新值和新位置作为参数。所有容器都可以使用这种安插器。
inserter(container,pos)。
2、Stream iterators 流迭代器
int main(int argc, _TCHAR* argv[])
{
std::vector<std::string> coll;
std::copy(std::istream_iterator<std::string>(std::cin),std::istream_iterator<std::string>(),std::back_inserter(coll));
sort(coll.begin(),coll.end());
std::unique_copy(coll.begin(),coll.end(),std::ostream_iterator<std::string>(std::cout," "));
return 0;
}
较好的用法:
copy(istream_iterator<int>(cin),istream_iterator<int>(),back_inserter(ivec));
//下句为将ivec内容输出屏幕
copy(ivec.begin(),ivec.end(),ostream_iterator<int>(cout," "));
---------------------------------------------------------
更好的用法:
vector<int> ivec(istream_iterator<int>(cin),istream_iterator<int>());
3、Reverse iterators 逆向迭代器
容器的成员函数:rbegin()和rend()。