自定义迭代器
一、迭代器是什么
轻量句柄,重载解引用/递增/比较;算法通过 iterator_traits 查询其类别与关联类型,从而选择正确实现。旧式写 typedef std::forward_iterator_tag iterator_category;,C++20 可用 concepts 约束。
二、实现要点

随机访问还要 +/-/[]/<;提供 const_iterator 并允许从 iterator 隐式转换;C++20 ranges 可用不等类型的 sentinel。
常见坑
- 忘记 traits 导致算法退化或编译失败。
- iterator 不能转 const_iterator 造成接口难用。
- 容器重分配后迭代器悬空(见失效篇)。
小结
总结
迭代器是重载了解引用/自增/比较的轻量"指针化"句柄,要接入 STL 算法和范围 for,关键是通过 iterator_traits 提供 value_type/reference/difference_type/iterator_category 等关联类型(C++20 改用 input/forward/bidirectional/random_access/contiguous 等 concepts 约束),随机访问还要实现 +/-/[]/<,并由容器的 begin/end 返回、提供可从 iterator 隐式转换的 const_iterator,C++20 ranges 还允许使用与迭代器不同类型的 sentinel;漏写 traits 会让算法退化或编译失败,容器重分配后也要警惕迭代器悬空。