关于c++迭代器的一些讨论。
具体结论已经经过实验。
c++STL库封装了一些非常常用的数据结构,但是想要熟悉掌握这些就不能不熟悉迭代器。
主要说三个问题以及结论
- 正向迭代器与反向迭代器的相互转化以及转化的效率问题: 转化是O(1)还是O(log)的不太清楚。
- .删除迭代器指向的元素后,it++ 还有效吗?
- 删除迭代器指向的元素后,it会自动移动到下一个位置吗?
- 正向迭代器和反向迭代器同样能够 − − -- −−吗?
1 . 正向迭代器与反向迭代器的相互转化以及转化的效率问题
这里以 s e t < i n t > set<int> 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)
但是需要注意的是,