关于C++迭代器的一些讨论(迭代器互相转化,效率,erase操作的影响 )。

本文探讨C++中迭代器的几个关键问题:正向与反向迭代器的转化效率,删除迭代器指向元素后的迭代器有效性,以及正向和反向迭代器是否支持++和--操作。实验表明,转化可能是O(1)或O(logn),删除后迭代器不会自动移动,++操作的效果取决于容器类型。
摘要由CSDN通过智能技术生成

关于c++迭代器的一些讨论。

具体结论已经经过实验。

c++STL库封装了一些非常常用的数据结构,但是想要熟悉掌握这些就不能不熟悉迭代器。

主要说三个问题以及结论

  • 正向迭代器与反向迭代器的相互转化以及转化的效率问题: 转化是O(1)还是O(log)的不太清楚。
  • .删除迭代器指向的元素后,it++ 还有效吗?
  • 删除迭代器指向的元素后,it会自动移动到下一个位置吗?
  • 正向迭代器和反向迭代器同样能够 − − ​ --​ 吗?

1 . 正向迭代器与反向迭代器的相互转化以及转化的效率问题

这里以 s e t &lt; i n t &gt; set&lt;int&gt; set<int> 容器为例子, i t it it表示其正向迭代器, r i t rit rit表示其反向迭代器。

1.正向迭代器转化为反向迭代器

    rit=reverse_iterator<set<int>::iterator >(it);

2.反向迭代器转化为正向迭代器

	it=rit.base();

效率不太确定,反正不是O(n)的。应该是O(1) 或者O(logn)


但是需要注意的是,

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值