iterator——正向迭代器reverse_iterator——反向迭代器const_iterator——常量正向迭代器const_reverse_iterator——常量反向迭代器
//函数模板,正向打印容器内元素 templatevoid show(CON& src) { typaname CON::iterator it = src.begin(); for(;it != src.end();it++) { cout<<*it<<" "; } cout< void show_reverse(CON& src) { typaname CON::reverse_iterator it = src.rbegin();//反向迭代器 for(;it != src.rend();it++) { cout<<*it<<" "; } cout< void show_const(CON& src) { typaname CON::const_iterator it = src.cbegin(); for(;it != src.cend();it++) { cout<<*it<<" "; } cout< void show_reverse_const(CON& src) { typaname CON::const_reverse_iterator it = src.crbegin(); for(;it != src.crend();it++) { cout<<*it<<" "; } cout< 二、插入型迭代器 insert_iterator——随机插入型迭代器——insert();inserter——函数模板封装类模板对象的产生
vectorv1; insert_iterator > it(v1,v1.begin()); // 被插入的容器 插入的位置 for(int i=0;i<10;i++) { *it = i + 100; } //将一个容器中某个区间的元素插入到另一个容器的指定位置 template void Insert(const IT& first,const IT& last,INSERT_IT insert_it) { IT tmp=first; for(;tmp != last;tmp++) { *insert_it = *tmp; } } //将v1中的所有值插入到v2第二个值开始的位置 insert_iterator > it1(v2,v2.begin()+1); Insert(v1.begin(),v1.end(),it1); //函数模板封装类模板的产生 Insert(v1.begin(),v1.end(),inserter(v2,v2.begin()+1)); template insert_iterator minserter(const CON& con,typename CON::iterator it) { return insert_iterator (con,it); } back_insert_iterator
>——后插型迭代器——push_back(); vectorv1; back_insert_iterator > it1(v1); *it1 = 888; template back_insert_iterator > mback_insert(CON& con) { return back_insert_iterator >(con); } front_insert_iterator
>——前插型迭代器——push_front(); //vector没有push_front() #include三、流迭代器list
list1; front_insert_iterator >it1(list1); auto it2 = front_inserter(list1);//自推声明变量的类型 *it1 = 222;//在list1前插入222 *it2 = 999;
ostream_iterator
——输出流迭代器——调用输出 ostream_iteratorito(cout," "); //输出0 1 2 3 4 5 6 7 8 9 for(int i = 0;i<10;i++) { ito = i; } istream_iterator
——输入流迭代器 istream_iteratoriti(cin); int a; a = *iti; ito = a; 欢迎分享,转载请注明来源:内存溢出
评论列表(0条)