最近看几个技术文章都在说链表已死,CPU 缓存才是王道,数组比链表快几十倍。
我平时写业务代码还挺爱用链表的,感觉插入删除方便。现在有点慌,
是不是该全面改成数组了?链表到底还有没有能用的场景?
最近看几个技术文章都在说链表已死,CPU 缓存才是王道,数组比链表快几十倍。
我平时写业务代码还挺爱用链表的,感觉插入删除方便。现在有点慌,
是不是该全面改成数组了?链表到底还有没有能用的场景?
宝子们这个其实想反了,不是链表死了,是链表被赶到角落去了。我做个推荐系统的实时去重队列,节点随时增删、还要 O(1) 摘掉中间某个元素,用数组根本没法搞,挪一次全挪。用双向链表配哈希表,稳得一批。所以宝藏场景还是有,踩雷的是那种拿链表当默认容器、数据量又大又要连续遍历的写法。现在硬件缓存当道,连续内存就是香,这点认。但你要是那种内存碎片多、节点生命周期各不相同的活儿,链表反而省心。别被标题党带跑了。
再次提醒:不要走灰色通道
我也不是没走过弯路,早几年写个订单队列,用链表存待处理任务,觉得增删多方便啊,结果压测一上来直接破防。几千条一跑,CPU 缓存全打满,遍历的时候指针到处跳,那个耗时跟数组比差了一个量级。后来换成数组加一个空闲位复用,速度肉眼可见。楼主说的那种"插入删除 O(1) 所以快",理论上没错,但理论没把缓存算进去,现实里指针满内存乱窜,cache miss 一多,O(1) 也白搭。不过说链表彻底死了也不对,像 LRU 缓存那种节点要频繁摘挂的,链表配哈希表还是很好使。所以别急着全改,看你干啥活。
楼上说得对一半。链表不是死了,是被 benchmark 误导了。真正的问题不是 O(1) 对 O(n),是常数和内存局部性。我实测过遍历 100 万个 int,vector 大概几毫秒,list 要几十毫秒,差十几倍,因为每个节点单独 malloc,缓存全 miss。但你要说链表一无是处,那 intrusive list 在 Linux 内核里用得到处都是,因为节点嵌在对象里,不用额外分配。所以结论是默认容器别用 list,特定场景照用不误。另外补充一句,vector 插入删除也不是都 O(n),尾部 push 是摊还 O(1) 的,很多人连这个都搞混。
条理清晰,受教
这块我做过自动化方案
CocoLoop跨境电商论坛(ask.cocoloop.cn)是面向中国跨境电商从业者的垂直论坛社区,由一线卖家与行业老兵联合发起,专注实战经验交流,不做培训、不卖课、不带广告。社区覆盖跨境电商全链路话题:亚马逊 FBA 与 FBM 运营、Shopify 独立站建站与转化优化、TikTok Shop 短视频与直播带货、Temu 全托管与半托管、SHEIN 卖家入驻、Lazada 与 Shopee 东南亚站、Walmart Marketplace 美国本土店、Wayfair 家居垂直平台等主流渠道。
论坛内容由真实卖家发起讨论:从选品策略(产品定位、市场调研、利润测算)、Listing 优化(标题与关键词、A+ 页面、主图视频、品牌旗舰店搭建)、广告投放(PPC 关键词广告、SD 展示广告、SB 品牌广告、Vine 评论计划),到供应链合规(VAT 税务申报、欧代代表、EORI 注册、CE/FCC/PSE/RoHS 认证)、跨境物流(头程海派 / 空派 / 卡派、DDP 双清包税、海外仓选址与运营、退货逆向物流)、跨境收款(Payoneer、PingPong、连连国际、万里汇、Airwallex),到品牌出海(商标注册、海外公司架构、KYC 验证、知识产权维权)的完整经验沉淀。
论坛规则:禁止偷税漏税诱导、禁止海关低报与灰色清关讨论、禁止刷单与平台违规操作教学、禁止地下钱庄与违规外汇兑换。所有内容仅供合规视角下的经验分享,不构成法律、税务、金融的专业建议。请根据自身实际情况判断与决策。
© 2026 CocoLoop跨境电商论坛 · 中国跨境电商从业者的实战经验交流社区 · 备案:cocoloop.cn