2022-1-25 STL迭代器

2022-1-25 STL迭代器,第1张

2022-1-25 STL迭代器 一、顺序型迭代器(遍历型迭代器)

iterator——正向迭代器reverse_iterator——反向迭代器const_iterator——常量正向迭代器const_reverse_iterator——常量反向迭代器

//函数模板,正向打印容器内元素
template
void 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——函数模板封装类模板对象的产生

vector v1;
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();

vector v1;
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_iterator ito(cout," ");
//输出0 1 2 3 4 5 6 7 8 9
for(int i = 0;i<10;i++)
{   
    ito = i;
}

istream_iterator——输入流迭代器

istream_iterator iti(cin);
int a;
a = *iti;
ito = a;

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5714217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存