c++之迭代器

别说谁变了你拦得住时间么 提交于 2019-11-28 04:54:07

迭代器:

1)定义:容器类名::iterator  迭代器名;

    如:array<T,N>::iterator  iter; vector<T>::iterator  iter; deque<T>::iterator  iter;  list<T>::iterator  iter; forward_lis<T>::iterator  iter;

2)初始化:

    vector<int> ivec;
    vector<int>::iterator iter1=ivec.bengin();    //将迭代器iter1初始化为指向ivec容器的第一个元素
    vector<int>::iterator iter2=ivec.end();    //将迭代器iter2初始化为指向ivec容器的最后一个元素的下一个位3)分类:正向迭代器:iterator    反向迭代器:reverse_iterator    常量正向迭代器:const_iterator    常量反向迭代器:const_reverse_iterator4)操作:
   正向: *iter                //对iter进行解引用,返回迭代器iter指向的元素的引用
       iter->men            //对iter进行解引用,获取指定元素中名为men的成员。等效于(*iter).men
       ++iter               //给iter加1,使其指向容器的下一个元素
       iter++
       iter1==iter2         //比较两个迭代器是否相等,当它们指向同一个容器的同一个元素或者都指向同同一个容器的超出末端的下一个位置时,它们相等 
        iter1!=iter2       双向:(在正向的基础上增加)       --iter               //给iter减1,使其指向容器的前一个元素                   iter--   随机访问:P+i                //使得 p 往后移动 i 个元素。             p+=i         //返回 p 后面第 i 个元素的迭代器。             p-i             p-=i             p[i]         //返回 p 后面第 i 个元素的引用。             iter1与iter2还可进行比较: <,<=,>,>=;5)不同容器支持不同的迭代器:

表1:不同容器的迭代器的功能
容器迭代器功能
vector 随机访问
deque 随机访问
list 双向
set / multiset 双向
map / multimap 双向
stack 不支持迭代器
queue 不支持迭代器
priority_queue 不支持迭代器


 
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!