adapter
1.迭代器配接器
(1)inserter iterator
1.back_inserter(container) //调用push_back();
2.front_inserter(container) //调用push_front();
3.inserter(container,position); //唯一可用于关联式容器时,position起引导作用
对于insert迭代器,*pos==pos;
赋值操作能被视为安插操作。
*iter 传回iter;
iter=value; 安插value
++iter和iter++都是传回iter;
生成back_inerter 迭代器方法:
1.back_insert_iterator<container<T>> iter(container<T> coll);
*iter=value; //插入value
2.back_inserter(coll)=value; //插入value
但是记住在插入前要有足够的空间。
(2)stream iterator
1- istream_iterator<T>(cin),istream_iterator<T>() //读入输入流的T类型的数,类型不匹配或结尾停止
*iter; //传回先前读取的值
iter->member; //传回先前读取的元素成员
++iter; //读取下一个元素;
iter++; //读取下一个元素
iter1 == iter2; //检查是否相等
2- ostream_iterator<T>(cout,cstring); //...为空格符
*iter=value; //向输出流插入value;
(3)reverse iterator 用于逆向遍历。
注意:rbegin()==end(), 但是内容是前一个元素的内容,逻辑指向和实际指向不同。
container<T>::reverse_iterator rpos(pos); //把一般迭代器改为逆向迭代器
rrpos=rpos.base(); //把逆向迭代器改为一般迭代器
2.函数配接器<functional>:将两个仿函数结合起来的仿函数
bind1st(op,value);//op是一个一元仿函数。
bind2nd(op,value); //op是一个二元仿函数。value作为op的第二参数
not1(op); //op是一元仿函数
not2(op); //op是二元仿函数