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 //错误, 注意: 迭代器不能相加
标签:iter0,const,迭代,iterator,元素,c++,empty 来源: https://www.cnblogs.com/gaiqingfeng/p/15128164.html