IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

标签:复杂度分析

共 2 篇相关文章

IT 累计浏览 3,672

写在 0x20 岁之前

这篇讲的是一位年轻技术人在即将迈入“0x20”(即32岁)之际,对技术成长路径、社区参与和个人发展的一次真诚复盘与展望。作者的核心观点是,技术人的影响力不应局限于使用技术,更在于如何“反哺”技术生态。 文章从个人经历出发,提出了从技术“消费者”转变为“贡献者”的关键一步。这并不要求多么宏大的目标,而是始于具体行动:为常用开源项目提交一次代码补丁、参与一次社区讨论、甚至只是完善一次文档。作者以自身参与 Rust 和 Zig 等语言社区为例,分享了如何从“旁观者”真正融入一个小圈子,并在其中找到归属感与驱动力。 更深层的启发在于,这种“输出”不仅滋养社区,也反过来锤炼自身的思维与工程能力。作者指出,持续、公开的技术实践与分享,是构建个人技术品牌最扎实的路径。对于许多有心参与却不知从何开始的开发者而言,这篇文章没有提供高深方法论,而是描绘了一条从身边小事做起、自然融入社区的可行路径,这些朴素的行动指南或许正是最实用的“成人礼”。

IT 累计浏览 3,304

闲谈STL容器之size()成员函数

这篇讲的是C++程序员几乎天天在用,却可能忽略其内部细节的STL容器`size()`成员函数。很多人想当然地认为这个返回元素个数的函数,时间复杂度一定是O(1)。但作者通过研读SGI STL源码发现,情况并非如此统一。 文章以“知己知彼”为喻,指出在使用标准库时,了解其底层实现原理至关重要。作者逐一分析了`vector`、`list`和`deque`这三种常用容器。其中,`vector`的`size()`确实是常数时间O(1),但`list`(双向链表)的`size()`实现却可能是线性时间O(n),需要遍历链表来计算节点数;而`deque`的实现则依赖于其内部的分段数组结构。 这种差异并非随意为之,而是源于容器不同的设计目标和数据结构特性。文章通过源码层面的对比,让读者看清:一个看似简单的接口背后,可能隐藏着完全不同的性能特征。这提醒开发者,在对性能有极致要求的场景下,选用容器时不能只看接口,还需深究其具体实现。