C++迭代器

迭代器是指向容器中一个元素的类似指针的东西,通过它可以读取容器中的元素

容器可以进行++操作访问下一个元素

举例:

int main()
{
   vector<int> a = {1,2,3};
   vector<int>::iterator i = a.begin();
   while(i != a.end()){
      cout<< *i << "  ";
      i++;
   }
}

begin()方法可以返回容器的第一个元素对应的迭代器

容器适配器是没有迭代器的 因为操作受限制,只能访问适配器的特定位置的元素(比如队列只能访问队列头)

迭代器的分类

  1. 正向迭代器:可以进行++pp++*p的操作。此外,两个正向迭代器可以互相赋值,还可以用==和!=运算符进行比较。但是不能进行大小比较。
  2. 反向迭代器:容器类名::reverse_iterator 迭代器名;和正向迭代器的操作逻辑相反。本质上和正向迭代器一样。
  3. 双向迭代器:也可以进行--pp--的操作
  4. 随机访问迭代器:可以进行 p+=i p+i p-=i p-i p[i]的操作,也可以进行 <、>、<=、>= 的大小比较

当迭代器指向第一个元素前,或最后一个元素后,这时访问迭代器指向的元素,程序会崩溃。
不同类型迭代器的功能

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

迭代器的函数

  • advance(p, n):使迭代器 p 向前或向后移动 n 个元素。
  • distance(p, q):计算两个迭代器之间的距离,即迭代器 p 经过多少次 + + 操作后和迭代器 q 相等。如果调用时 p 已经指向 q 的后面,则这个函数会陷入死循环。
  • iter_swap(p, q):用于交换两个迭代器 p、q 指向的值。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值