list 2两种迭代器类模板相似度极高,想办法让他们合成一个
这里先看源码咋处理
源码中只设计了一个迭代器类模板,但是他有三个模板参数,分别是 T:容器存储的元素类型
Ref:引用类型,普通迭代器传 T&;const 迭代器传 const T&
Ptr:指针类型,普通迭代器传 T*;const 迭代器传 const T* 后两个模板参数各自代表两种含义,之前自己实现时每个模板参数只能代表一种情况,所以要写两个不同迭代器类模板。现在这后两个参数对应有cons修饰和非const修饰时的情况,将这两种情况分别单独列出来并重命名迭代器。self:代表当前实例化出来的迭代器自身类型,用于拷贝构造、赋值等。
将迭代器类模板list_const_list注释,现在改造迭代器类模板list_iterator
改之前
改之后
再将模板内函数中只能代表一种情况的模板参数换为各自对应的三个模板参数(T Ref Ptr),如下
将类模板list中的迭代器改过来
反向迭代器不讲
现在看看迭代器失效问题
在已有的cpp文件代码最后加入如下代码
栈和队列
栈和队列不再是容器,虽然归类到containers里面,但是却是容器适配器,具体原因后面讲
栈:后进先出 LIFO 要包含对应的头文件
队列:先进先出 要包含对应的头文件