- 博客(194)
- 收藏
- 关注
原创 全网首发!!C++20新特性全在这一张图里了
前面我写了C++11、C++14、C++17新特性系列文章,大家可以移步到这里↓↓↓《C++11新特性,所有知识点都在这了!》《C++14新特性的所有知识点全在这儿啦!》《他来了,他来了,C++17新特性精华都在这了》没错,就差C++20新特性了,今天终于出炉啦。目录语言特性比较运算<=>对于 (a <=> b),如果a > b ,则运算结果>0,如果a < b,则运算结果<0,如果a==b,则运算结果等于0,注意.
2021-04-11 19:25:44
1816
原创 c++11新特性,所有知识点都在这了!
这篇文章基本上涵盖了c++11的所有新特性,并有详细代码介绍其用法,对关键知识点做了深入分析,对重要的知识点我单独写了相关文章并附上了相关链接,我还准备了完整版c++新特性脑图,有需要可以去我的gz号回复 “新特性” 下载,见文章最后。auto & decltype关于C++11新特性,最先提到的肯定是类型推导,C++11引入了auto和decltype关键字,使用他们可以在编译期就推导出变量或者表达式的类型,方便开发者编码也简化了代码。 auto:让编译器在编译器就推导出变量的类型,
2020-05-11 20:27:49
1883
原创 C++依赖关系分析:5个工具理清模块关系
cppdep会检查组件是否正确关联头文件和实现文件,是否存在文件名冲突,头文件包含是否合理,最重要的是它能发现组件之间的循环依赖。CodeViz的安装相对复杂,需要下载特定版本的GCC源码,打上CodeViz的补丁,重新编译GCC。实际项目中,往往会组合使用多个工具。比如用Doxygen生成整体文档,用IWYU优化头文件,用cppdep分析模块依赖,用CodeViz理解关键算法的调用流程。与基于字符串匹配的工具不同,Clang能够理解预处理器的各种指令,包括条件编译、宏展开等,生成的依赖关系更加准确。
2026-04-09 18:19:25
240
原创 资深架构师吐血整理:这11个C++11保命特性如果不了解,一定进不去大厂!
博主介绍:程序喵大人现在的C++大厂面试,根本不听你背书。C++11作为现代C++的基石,面试官不仅要看你知不知道,还要看你有没有在工程里踩过坑!以前写STL迭代器,那长长的一串类型名简直能把手敲断。有了auto,编译器会在编译期自动通过初始值帮你推导出变量的真实类型。👉 使用场景:迭代器类型、Lambda表达式的返回类型、模板编程中复杂的嵌套类型。⚠️ 避坑指南:auto默认会丢弃引用和const属性!如果你想修改原对象,或者想避免庞大对象的拷贝,务必老老实实写上 auto& 或者 const auto
2026-04-08 19:45:00
333
原创 一文讲透Harness编程
模型只负责推理生成;Harness是模型之外的一切——代码、配置、环境、工具、状态、约束、反馈、编排的总和,是让LLM从“文本函数”变成能自主干活的Agent的控制系统。Harness Engineering是为AI Agent设计标准化运行时、约束护栏、工具链、反馈闭环与生命周期管理的工程方法论,目标是让非确定的大模型,在真实业务中实现确定、可控、可审计、可复现的稳定输出。这张图片清晰地展示了 Agent 的构成。中心是作为内核的“大模型”,负责基础的推理和生成。
2026-04-03 20:01:25
410
原创 C++依赖关系分析:5个工具理清模块关系
最近看到很多同学有疑问,有小伙伴问,有没有能理清模块的依赖分析工具,在写项目时, 模块之间藕断丝连,改一个文件引发编译雪崩。其实,这些问题的根源都在于缺乏有效的依赖管理。借着这次机会,我们聊聊5个能帮你理清模块关系的传统C++依赖分析工具。(如果有钱不care token消耗,直接用AI帮你梳理更好)
2026-04-01 22:33:31
446
原创 C++新手必藏!5款在线编译器让你随时随地写代码
各位新入坑的C++玩家们,还在为安装编译器烦恼吗?还在为换电脑找不到代码发愁吗?今天介绍5款神兵利器,让你们告别环境配置的噩梦,随时随地都能写代码!
2026-03-24 20:54:18
391
原创 C++不行了?
分析了C++在2026年的真实现状,指出其并未过时,而是从通用语言转向核心领域语言。在游戏开发、高频交易、嵌入式等方向仍具不可替代性,并结合市场数据与职业前景,给出不同人群的学习建议。
2026-03-23 19:45:00
374
原创 推荐5个编程网站,可以手撕大厂Offer!
推荐5个提升C++编程能力和算法水平的优质平台,包括LeetCode、HackerRank、Codewars、Codeforces和TopCoder,分别从基础训练、算法刷题、竞赛提升等多个维度进行讲解。通过系统练习与实战编码,帮助开发者提升代码能力,应对大厂技术面试,实现从理论到实战的跃迁。
2026-03-19 20:53:09
355
原创 被字节面试官喷了:天天背多态,连虚函数表的内存图都画不出?
深入解析C++多态底层实现机制,重点讲解vtable与vptr原理,并结合单继承与多继承详细拆解对象内存布局及虚函数调用流程。同时分析多态带来的空间与时间开销,包括间接寻址与内联优化受限等性能影响,帮助读者建立底层视角,提升面试与工程实践能力。
2026-03-18 20:14:03
357
原创 OpenClaw的成功是AI Agent的“iPhone时刻”吗?
OpenClaw推动AI从对话走向执行,标志着Agent迈入规模化落地阶段,但在产品体验、安全与生态上仍未达到“iPhone时刻”。当前更像功能机时代的能力验证期,未来随着门槛降低与生态完善,Agent有望成为基础设施级生产力工具。
2026-03-17 21:18:53
484
原创 map的[]运算符,这个看似方便的语法,藏着怎样的魔鬼?
这篇文章深入解析了 std::map 的 operator[] 运算符隐藏行为,说明其在键不存在时会自动插入默认值,可能导致逻辑错误和性能问题。通过对比 operator[]、find、at、insert 等接口,结合典型错误案例,系统总结了 map 在读写场景下的正确使用方式与实践建议,帮助开发者规避隐式插入带来的风险。
2026-03-12 19:45:00
717
原创 C++对异常安全的三个约定
在C++开发中,异常处理是绕不开的话题。但你有没有想过:当异常发生时,你的代码真的安全吗?资源会不会泄漏?对象状态会不会被破坏?程序还能继续运行吗?这些问题背后,藏着一个被很多开发者忽视的核心概念——异常安全保证。
2026-03-11 21:59:56
418
原创 struct和class到底有什么区别?问题很简单,但你要回答出这背后的设计意图。
语法层面:唯一区别是默认访问权限和继承方式设计意图:struct强调数据聚合,class强调封装抽象工程实践:根据语义选择,struct用于数据容器,class用于逻辑堡垒。
2026-03-06 19:46:02
390
原创 有了它,C++文件操作再也不难了
组件作用path路径的抽象表示(支持Unicode、自动规范化)目录项(含路径 + 文件状态缓存)目录遍历迭代器space_info文件属性与磁盘空间信息操作函数existscopyremove等std::cout << "文件大小: " << fs::file_size(p) << " 字节" << std::endl;// 时间格式化需要额外处理。
2026-03-05 18:38:18
382
原创 小米二面:std::map和std::unordered_map谁更快?别只知道哈希表
常见问题哈希冲突严重:当不同的键通过哈希函数计算出相同的哈希值时,会落到同一个桶中,导致性能退化哈希函数与相等比较不一致:如果哈希函数和 operator== 的逻辑不一致,会导致查找失败哈希计算耗时过长:对于长字符串等复杂类型,哈希计算的时间可能比查找本身还要长解决方案// 正确的自定义哈希函数示例int age;template<>// 异或结合位移减少碰撞。
2026-03-04 18:47:06
359
原创 GitHub上那些star过千的C++学习仓库与面试资源,我都整理好了!
给大家整理了一份GitHub上star过千的C++学习仓库与面试资源清单。
2026-03-03 19:45:00
428
原创 Google为什么要禁用C++的异常处理
直奔主题,在C++的世界里,异常处理机制一直是争议的焦点。几乎所有C++教材都将异常作为推荐的错误处理方式,标准库也广泛使用异常。然而,科技巨头Google却在其C++风格指南中明确规定:“我们不使用C++异常”。这一决策背后,隐藏着怎样的工程智慧与现实考量?Google的C++代码库规模堪称史诗级——超过十亿行的遗留代码在设计之初并未考虑异常安全性。如果现在引入异常,这些代码将无法正确处理异常传播,可能导致资源泄漏、数据损坏甚至系统崩溃。
2026-03-02 21:48:35
594
原创 关于计算机网络,必须掌握这几个知识点!
/ 小端序内存:78 56 34 12// 网络字节序:12 34 56 78网络字节序统一使用大端序,确保跨平台通信的数据一致性。
2026-03-01 21:01:33
608
原创 std::execution新提案:C++26将如何统一CPU、GPU和NPU的并行编程模型
在异构计算架构中,CPU、GPU与NPU各司其职,但数据在不同设备间频繁迁移导致性能瓶颈。传统编程模型要求开发者手动管理内存拷贝,不仅增加复杂度,还易引发一致性问题。C++26的std::execution新提案为跨设备协同提供了系统级解决方案,让一套代码适应多种加速器。C++17正式引入标准库并行算法,核心是对原有串行算法做「零侵入改造」,仅通过传入执行策略参数,即可实现自动并行化,无需修改算法的业务逻辑。C++20进一步完善了这一体系,引入了。
2026-02-28 20:21:18
558
原创 说一下你遇到过的内存泄漏,你是怎么发现和解决的?
在 C++ 面试中,内存管理是高频考点,而内存泄漏更是重中之重,下面整理了一些常见的内存泄漏发生的场景。
2026-02-27 20:15:00
619
原创 CDN是个啥玩意?用了CDN就一定快?这些坑你踩过吗
技术不仅是会用工具,更是理解工具背后的代价。CDN不是万能药,而是需要精准配置的工具。在决定是否使用CDN时,一定要结合业务场景,避免陷入“为了CDN而CDN”的误区。
2026-02-26 20:43:54
611
原创 如何确保某个函数,在万千线程中只被执行一次?
std::call_once 和 std::once_flag 是现代 C++ 并发编程中不可或缺的工具。它以简洁的 API 封装了复杂的线程同步逻辑,让我们能够专注于业务逻辑本身,而不必担心底层的竞争条件、内存序问题或死锁风险。在实际开发中,当你需要确保某个操作只执行一次时,优先考虑 std::call_once。它不仅能避免手写双重检查锁定的复杂性,还能提供更好的性能和安全性。记住:好的并发代码不是靠手写复杂的锁和条件变量,而是善用标准库提供的工具,让语言和库为你处理底层的细节。
2026-02-25 20:59:55
602
转载 C++教会我的关于编程的七件事,其他语言无一能做到
C++第一次让我感到谦卑,是在凌晨2点17分。我当时在构建一个Python自动化工具,每天夜里要处理数小时的日志文件。它能工作。代码很简洁。也很优雅。但就是慢得让人难受。我记得盯着进度条,心想:这不该是性能的极限吧。于是我用C++重写了核心引擎。相同的逻辑。相同的流程。运行时间从47分钟降到了4分钟以内。那个晚上改变了我对编程的认知。不仅仅是速度,还有对控制、责任的理解,以及代码运行时底层到底发生了什么。我现在仍然主要用Python做自动化,但C++教会我的东西,是其他任何语言都没能迫使我去学习的。
2026-02-15 20:08:45
25
原创 什么是野指针和悬空指针?如何避免?很多人都回答不到点子上
野指针是指未初始化或已被释放但仍然被程序使用的指针。它可能指向任意内存地址,包括那些不属于程序的内存区域。未初始化的指针变量,值为随机垃圾地址指针越界访问导致指向非法内存区域。
2026-02-13 20:44:19
546
原创 字节面试题:vector迭代器都在什么场景下会失效?和内存释放有关系吗?
迭代器失效是指:当 vector 的内部结构发生变化时,原本指向特定元素的迭代器、指针或引用,可能不再指向有效的内存位置或指向错误的元素。
2026-02-12 18:56:20
569
原创 C++未来展望:模块、协程、反射如何改变我们编写代码的方式?还是说C++要被淘汰?
2026年即将到来的 C++26 标准,标志着这门 40 年历史的语言进入全新阶段。模块(Modules)、协程(Coroutines)和静态反射(Static Reflection)三大特性,正从根本上重构 C++ 的代码组织、并发模型和元编程能力。这不是简单的语法糖叠加,而是对 C++ 核心机制的一次系统性重构。编译速度提升 10 倍、异步代码同步写、元编程零样板——C++ 正经历 40 年来最深刻的范式变革。
2026-02-11 21:00:00
1266
原创 分布式锁的三种主流实现方案,90%的面试官都会追问它们的优劣与选型陷阱!
在分布式系统架构中,当多个服务实例需要访问同一共享资源时,分布式锁成为了保证数据一致性的关键机制。从秒杀系统防止库存超卖,到定时任务避免重复执行,再到支付回调防止重复处理,分布式锁的身影无处不在。对于准备后端面试的开发者来说,这几乎是绕不开的话题,而面试官往往会从多个角度进行追问:为什么需要分布式锁?有哪些实现方案?各自的优缺点是什么?如何根据业务场景进行选型?这些问题看似简单,但要让面试官满意,需要对各种方案有深入的理解,能够清晰地阐述其背后的原理和权衡。在单机多线程环境下,我们可以使用 C++ 的。
2026-02-10 20:42:52
329
原创 如何设计一个不允许拷贝,但允许移动的类?
在现代C++编程中,设计"不可拷贝但可移动"的类是一个非常重要的技术模式。这种设计模式特别适用于管理独占资源(如文件句柄、网络连接、动态内存等)的场景,能够显著提升程序的安全性,性能也会很有提升。
2026-02-09 19:31:13
537
原创 sizeof一个空类为什么是1?空基类优化又是什么?全是干货
空基类优化是C++编译器的一种优化技术,允许空类在派生类中不占用任何额外的内存空间,从而减少不必要的内存浪费。当一个类从空基类继承时,编译器可以将空基类子对象的内存空间优化为0字节。// 空类int x;// 若没有EBCO,sizeof(Derived)可能是8(1字节基类 + 3字节填充 + 4字节int)// 实际中sizeof(Derived)通常为4(仅包含int成员)
2026-02-07 20:25:40
628
原创 8个C++性能优化技巧,让你的程序快10倍!
在C++编程的世界里,性能优化不是玄学,而是一门精确的科学。你是否遇到过这样的情况:算法逻辑没问题,但程序运行速度就是上不去?或者,同样的功能,别人的代码比你快好几倍?最近不少同学在准备春招 / 考研复试,也有朋友打算在社招跳槽换一份更好的工作。如果你也在做规划,这段时间其实非常适合静下心来补强技术。如果你的目标是把技术水平拉起来,也想在简历上增加一些真正能说得出口的内容,可以趁这段时间做几个。既能把底层功底练扎实,也能让春招、考研复试、社招面试里遇到的技术问题更从容,有需要的朋友可以移步文末查看。
2026-02-04 19:30:00
374
原创 SFINAE 入门:让编译器帮你做选择
SFINAE 是 “Substitution Failure Is Not An Error” 的缩写,中文可译为“替换失败并非错误”。它是 C++ 模板重载解析过程中的一项关键规则,核心场景是:当编译器对模板参数进行替换(实例化)时,如果出现了某些特定的替换失败,并不会直接导致整个编译过程报错,而是会将该模板从重载候选集中排除,继续尝试匹配其他可用的模板。简单来说,SFINAE 给了编译器一个容错的机会,让它可以在多个模板重载中筛选出唯一合法的匹配,而不是一遇到替换问题就直接终止编译。
2026-02-03 19:45:00
565
原创 C++多态一定要了解这个
多态是面向对象编程的四大特性之一,简单来说就是"同一接口,不同实现"。动态多态(运行时多态):通过虚函数+继承实现静态多态(编译时多态):通过模板、函数重载实现。
2026-02-02 19:04:30
617
原创 C++开发者一定要知道Pimpl技法以及这几个特性
在C++大型项目开发中,头文件的每一次微小改动都可能引发连锁反应,导致整个项目重新编译。PImpl(Pointer to Implementation)惯用法作为经典的"编译防火墙"技术,通过巧妙的设计将接口与实现分离,不仅能够显著提升编译效率,还能增强代码的封装性和可维护性。
2026-01-30 20:52:57
600
原创 手写一个智能指针:从 unique_ptr 到 shared_ptr 的引用计数原理
智能指针是现代 C++ 内存管理的核心工具。RAII 提供了思想基础,unique_ptr 定义了清晰的独占所有权语义,shared_ptr 则通过引用计数实现了安全的共享模型,而 weak_ptr 负责解决循环引用这一经典难题。真正理解并掌握这些智能指针的实现原理,才能在工程实践中写出健壮、高性能、可维护的 C++ 代码。
2026-01-29 19:53:43
702
原创 头文件卫士 #pragma once 与 #ifndef:哪种方式保护你的头文件更好?
在 C++ 开发中,头文件重复包含是一个常见且令人头疼的问题。当多个源文件包含同一个头文件,或头文件之间相互嵌套时,可能导致类型重定义、宏重复声明等编译错误。#ifndef(条件编译)和(编译器指令)。本文将从底层实现机制、编译原理、使用场景等多个维度,对这两种技术进行全面对比分析,帮助开发者根据实际项目需求做出合理选择。
2026-01-28 18:11:01
539
原创 C++引用:别名而已,为何如此关键?奥秘在哪里?
从语言规范的角度看,C++ 标准明确规定:引用是对象的别名,不是独立对象,不占用存储空间。这句话看似简单,却蕴含着深刻的设计哲学。int a = 42;// ref 是 a 的引用ref = 100;// 直接修改 a 的值// 现在 a == 100在这个例子中,ref不是一个新的变量,而是a的另一个名字。无论通过a还是ref访问,操作的都是同一块内存。
2026-01-27 18:11:19
910
原创 代码混淆大赛(IOCCC)里的 C++ 代码能有多变态?
IOCCC是一场狂欢,也是一面镜子。它让我们看到C语言的无限可能,也让我们看到混乱代码的深渊。真正的编程大师不是能写出最复杂的代码,而是能用最简单的方式解决问题。在欣赏IOCCC代码艺术的同时,请记住:可读性是代码的生命线。你的代码写给未来的自己和其他程序员,而不是写给编译器。
2026-01-26 18:04:05
1063
原创 引用占用内存空间吗?
引用在概念上不占内存,但为了能正常工作,编译器可能需要类似指针的实现机制。这也是为什么汇编代码可能完全相同,但语法和语义却完全不同的原因。引用在底层实现上与指针相同,不会占用独立的存储空间来“存储引用本身”。引用是一种特殊的变量别名机制,它的引入可以弥补 C 中指针的部分缺陷。编译器通常将引用实现为指针,底层可能需要指针大小的存储,但这是实现细节。虽然引用本身不占用额外内存,但在某些场景下可能需要额外的存储。编译器可以将引用变量完全优化掉,不在内存中生成实体。引用是编译时的别名机制,不占用独立的存储空间。
2026-01-23 21:08:15
961
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅