迭代器
已经定义
Array<T>
,Pointer<T>
和Ptr_to_const<T>
使得能部分确保安全性,避免使用指针进一步取代指针,需实现加法、减法和关系运算符
|
|
- 基类及派生类都要定义这些操作
|
|
- 两个指针当且仅当指向同一个Array的同一个元素(或都不指向任何Array)时才相等
|
|
- 迭代器能在不暴露容器内部结构的情况下访问容器的元素
删除元素
当元素不存在时的处理方法
禁止从容器中删除单个元素(可以删除整个容器)
在每个容器对象中保存一个有效迭代器的列表,删除一个元素则正好删除刚好指向这个
被删除元素的迭代器对容器中每个元素采用引用计数,删除任何一个元素都必须等到最后一个指向该元素的
引用都不存在让迭代器指向容器中元素与元素之间的位置上(难以实现;影响先有代码)
删除容器
容器本身已不存在,还有活动的迭代器的解决方法
删除操作延后到最后一个迭代器失效
采用处理删除单个元素的思想
用户确保一旦容器删除就不再使用迭代器
只要有活动迭代器存在就禁止删除容器本身
《C++沉思录(Cplusplus Thinking)》笔记