若需大量自定义迭代器,使用自定义类型替代标准类型是否合理?
自定义循环双向链表在闭合多边形算法中的合理选择
我负责的一个从ANSI C迁移而来的大型项目里,处理闭合多边形的核心算法一直沿用自定义循环双向链表,没有替换成C++标准容器,原因如下:
贴合算法的定制化设计
这个自定义链表是完全针对闭合多边形的操作逻辑量身打造的,原生支持循环双向导航,能直接省去大量为适配标准容器而额外编写的代码。替换标准容器会大幅提升复杂度
试过改用std::list这类标准双向容器,但必须编写比自定义类型复杂得多的自定义迭代器——原本链表自身就能处理的循环跳转、首尾无缝衔接、多模式导航等操作,全部要转移到迭代器层实现,而算法本身需要多种不同的导航逻辑,这会让整体代码的复杂度显著上升。并非排斥现代C++特性
我并不抵触C++的现代特性,也认同标准容器通常能提升软件的可维护性,但这是罕见的自定义类型更合理的场景:自定义结构直接封装了算法所需的核心操作,避免了冗余的适配层代码,反而能降低整体复杂度。
内容的提问来源于stack exchange,提问作者bugblatterbeast
相关产品推荐
相关产品推荐

