标签:swap tab priority const 技术 双向 ptr rev 支持
容器迭代器 :
正向普通迭代器 :::iterator
正向常迭代器 :::const_iterator
反向迭代器 :::reverse_iterator // rbegin :最后一个迭代器的表示 rend : 第一个迭代器的前驱位置 遍历 rbegin ----> rend 使用++
反向常量迭代器 : ::const_reverse_iterator
常量迭代器是基类,普通迭代器是派生类,他们是继承关系
容器的一般迭代器
容器 | 迭代器功能 |
---|---|
vector | 随机访问 |
deque | 随机访问 |
list | 双向 |
set / multiset | 双向 |
map / multimap | 双向 |
stack | 不支持迭代器 |
queue | 不支持迭代器 |
priority_queue | 不支持迭代器 |
迭代器的辅助函数 :#include<algorithm>
迭代器失效 :
迭代器的实现,一般是容器中嵌套类,在迭代器这个类中存在一个指针,那么这个指针指向了容器的某个位置
迭代器失效是存在了insert 或者 erase 操作,会导致迭代器失效,那么这些容器失效情况有哪些?
迭代器失效原理:
在容器中嵌套一个迭代器类型,以vecto为例,这个类型一般有两个成员变量 :T* ptr(指向容器中某一个元素) ,vector<T,Alloc> *pVec(指向一个容器的指针);
同时有一个链表来表示,你操作过的所有迭代器,那么当你进行插入或者删除等操作时,会有一个检查操作,也就是遍历链表,在失效空间范围内,就将这个迭代器的pVe指针置为nullptr
标签:swap tab priority const 技术 双向 ptr rev 支持
原文地址:https://www.cnblogs.com/lc-bk/p/13594243.html