c++ 迭代器iterator


通过迭代器遍历vector和map的操作见以下链接:
c++ vector基本知识
c++ map基本知识


使用迭代器iterator

//使用迭代器iterator
auto iter0 = v.begin();  //返回第一个元素对应的迭代器
auto iter1 = v.end()  ;  //返回第最后元素下一位置(不是最后一个元素)对应的迭代器, 称为尾后迭代器.

迭代器的操作

//迭代器的操作
*iter0          //返回迭代器iter0所指元素的引用
iter0->mem      //解引用iter0, 并获取该元素的名为mem的成员, 等价于(*iter0).mem
++iter0         //令iter0指向容器的下一个元素
--iter0         //令iter0指向容器的上一个元素
iter0==iter1    //两个迭代器是否相等, 两个迭代器指向同一个元素则相等
iter0!=iter1    //两个迭代器是否不相等

const_iterator

//const_iterator
vector<int>::iterator       it1; //it1能读写vector<int>的元素
vector<int>::const_iterator it2; //it2能读vector<int>的元素, 不能写

string::iterator        it3; //it3能读写string对象的字符
string::const_iterator  it4; //it4能读string对象的字符, 不能写

auto iter2 = v.cbegin(); //返回const_iterator
auto iter2 = v.cend()  ; //返回const_iterator

解引用和成员访问

//解引用和成员访问
(*it).empty(); //解引用it, 调用结果对象的empty成员
*it.empty()  ; //错误, 先调用it.empty(), 但迭代器没有empty成员
it->empty()  ; //正确, 等价于(*it).empty(), 即->是把解引用和成员访问两个操作结合在一起

迭代器运算

//迭代器运算
iter + n //得到一个新迭代器, 向前移动了n个元素
iter - n //得到一个新迭代器, 向后移动了n个元素

iter += n //迭代器向前移动了n个元素
iter -= n //迭代器向后移动了n个元素

iter1 - iter2 //两个迭代器的距离
>, >=, <, <=  //比较迭代器哪个靠前
iter1 + iter2 //错误, 注意: 迭代器不能相加
posted @ 2022-06-17 10:58  编程驴子  阅读(356)  评论(0编辑  收藏  举报