当前位置:

首页 > C++

C++

C++如何高效删除vector中重复的相邻元素 _ std::unique用法实战【实战】
C++如何高效删除vector中重复的相邻元素 _ std::unique用法实战【实战】

直接说结论:std::unique 配合 erase 是标准、安全、高效的做法,但必须时刻记住——它只处理“相邻重复”,而且不会真的缩短容器。如果漏掉 erase 那一步,数据其实还赖在内存里,只是被覆盖了,打印出来你会怀疑人生。 为什么 std::unique 不能单独删除元素 std::uniq

C++如何判断两个AABB矩形碰撞 _ 坐标重叠判定算法基础知识【干货】
C++如何判断两个AABB矩形碰撞 _ 坐标重叠判定算法基础知识【干货】

两个AABB矩形碰撞需x、y轴投影均重叠,即a.minX

C++实现无锁并发单例模式 _ std::atomic与内存屏障屏障技巧【源码】
C++实现无锁并发单例模式 _ std::atomic与内存屏障屏障技巧【源码】

直接用std::atomic无法实现无锁单例,因为构造函数非原子。真正方案是双重检查锁定中正确使用acquire/release内存序,或采用std::call_once与静态存储期变量确保首次构造串行化。原子操作仅管理指针可见性,不控制构造次数与生命周期。

C++ std::is_aggregate用法指南 _ 判定聚合类型与现代初始化规则【干货】
C++ std::is_aggregate用法指南 _ 判定聚合类型与现代初始化规则【干货】

std::is_aggregate_v严格判定聚合类型,但不等同于能否用花括号初始化,因后者可能走initializer_list或构造函数路径。模板元编程中需确保类型完整、使用decay_t修饰,并搭配is_class_v判断。C++20放宽聚合定义,跨标准时需注意行为差异。

C++实现红黑树节点的自平衡旋转逻辑 _ 变色与旋转四种情形剖析【源码】
C++实现红黑树节点的自平衡旋转逻辑 _ 变色与旋转四种情形剖析【源码】

红黑树插入后四种不平衡情形依叔节点颜色与新节点方位识别:情形1叔红则仅变色;情形2/3叔黑且父左/右子需旋转整形;情形4为镜像;旋转须原子更新三组指针,变色必在旋转后执行以维持性质。

C++ std::is_trivially_copyable用法 _ 提升memcpy性能依据【干货】
C++ std::is_trivially_copyable用法 _ 提升memcpy性能依据【干货】

std::is_trivially_copyable_v用于判断类型能否安全使用memcpy,返回false时调用会触发未定义行为。常见误判包括std::string成员、虚函数、引用等。应通过static_assert在编译期对完整类型检查。跨平台时还需注意ABI一致性。条件为无虚函数、无用户定义特殊成员函数且所有成员均为平凡可拷贝。

C++ vector扩容机制原理 _ capacity与reserve函数优化【详解】
C++ vector扩容机制原理 _ capacity与reserve函数优化【详解】

C++vector的capacity()表示已分配内存能容纳的元素数,size()为实际元素数。reserve(n)仅在n大于capacity时触发内存重分配,避免频繁扩容开销。扩容时分配新内存、移动元素并释放旧内存,导致迭代器失效。reserve不改变size,resize则改变size并可能改变capacity。

C++ std::midpoint计算数值中点 _ 彻底解决整数溢出Bug【干货】
C++ std::midpoint计算数值中点 _ 彻底解决整数溢出Bug【干货】

C++的std::midpoint通过a+(b-a)/2避免整数溢出,支持同号与异号安全计算;浮点数版本精度更高,避免大数相加溢出;严格限定相同类型,指针需合法地址运算。适用于安全求中点,不替代业务逻辑校验。

C++ std::format格式化自定义类输出 _ formatter模板特化【详解】
C++ std::format格式化自定义类输出 _ formatter模板特化【详解】

在C++20中,格式化自定义类需全特化std::formatter于std命名空间,且不能偏特化。必须定义parse()和format()两个成员函数:parse()用于解析格式字符串,至少返回ctx.end();format()用于格式化输出,必须使用ctx.out()作为输出迭代器。注意编译器版本要求:MSVC19.32+,GCC13+,Clang15+

C++如何获取进程当前占用的精确CPU上下文切换次数统计 _ 系统监控【干货】
C++如何获取进程当前占用的精确CPU上下文切换次数统计 _ 系统监控【干货】

在Linux系统中,通过读取/proc/[pid]/status的voluntary_ctxt_switches和nonvoluntary_ctxt_switches字段,可以精确获取进程CPU上下文切换次数。getrusage系统调用函数因更新滞后,不适合用于实时监控。对于多线程进程而言,其切换次数为所有线程切换次数之和;若要查看单个线程,需访问/proc

C++ std::forward_list单向链表用法 _ 极致节省内存的场景选择方案【详解】
C++ std::forward_list单向链表用法 _ 极致节省内存的场景选择方案【详解】

std::forward_list是单向链表,专为内存敏感场景设计,需前驱迭代器进行插入删除。其size()在旧版STL中为O(n)操作,应使用empty()判空。每个节点比std::list少8字节,适合大量小值类型场景。splice_after是唯一不可替代的性能优势,不支持反向迭代。

C++实现高性能并发无锁栈Lock-Free Stack _ CAS原子操作实战【源码】
C++实现高性能并发无锁栈Lock-Free Stack _ CAS原子操作实战【源码】

无锁栈实现需解决ABA问题,核心是通过版本号机制将指针与计数器打包为128位数据进行CAS操作。push和pop必须正确设置next指针及内存序,节点分配建议使用线程局部内存池,延迟释放需采用hazardpointer或EBR技术。验证是否真正无锁需检查底层原子操作是否为lock-free,并通过破坏性测试及工具检测数据竞争。

C++实现高性能随机浮点数生成 _ mt19937引擎与分布函数配合【源码】
C++实现高性能随机浮点数生成 _ mt19937引擎与分布函数配合【源码】

使用std::mt19937配合std::uniform_real_distribution是C++11及以上最可靠高效的标准随机浮点数生成方案。引擎应声明为thread_localstatic避免多线程竞争,分布对象建议复用。需注意开闭区间语义,避免边界陷阱。复用引擎和分布后,每秒可生成千万级高质量双精度随机数。

C++如何获取硬盘分区的详细挂载点信息与剩余空间 _ filesystem库【实战】
C++如何获取硬盘分区的详细挂载点信息与剩余空间 _ filesystem库【实战】

std::filesystem::space仅返回容量、空闲和可用空间,无法获取挂载点、文件系统类型等关键信息。Windows需调用Win32API枚举盘符及卷挂载点,Linux/macOS需读取挂载点列表并调用statvfs计算空间。需处理权限、虚拟文件系统、路径斜杠等细节,避免程序阻塞或异常。

C++实现红黑树节点的双红冲突修正算法 _ 变色与旋转逻辑深度剖析【源码】
C++实现红黑树节点的双红冲突修正算法 _ 变色与旋转逻辑深度剖析【源码】

红黑树插入后若父节点为红色则触发双红冲突,祖父节点必为黑。叔节点为红时变色:父、叔涂黑,祖父涂红(根则再涂黑);叔节点为黑或空时需旋转,根据节点位置组合四种场景,旋转后新根变红、子节点变黑,并重置节点指针向上检查。

C++实现反射机制之类成员属性自动绑定注册 _ 宏定义元编程方案【源码】
C++实现反射机制之类成员属性自动绑定注册 _ 宏定义元编程方案【源码】

C++ 标准并不提供完整的运行时类型信息(RTTI),所以原生就谈不上反射。你不能指望它帮你自动列出类的成员变量、它们的名字、类型和偏移量——可序列化、配置绑定、UI 自动映射这些场景偏偏就是需要这些元数据。标准库不给,那就只能靠宏和模板在编译期自己“伪造”一套出来。核心思路很简单:在类定义处用宏注

C++实现线程安全的优先级队列 _ std::mutex与堆排算法封装【源码】
C++实现线程安全的优先级队列 _ std::mutex与堆排算法封装【源码】

用std::mutex封装堆可实现线程安全,但只读操作(top、empty、size)也需加锁防读中间态。pop_heap后须紧跟pop_back。top返回的引用锁释放后失效。生产者-消费者模型需额外条件变量。

C++实现二叉树最大路径和的递归算法 _ 路径计算与回溯逻辑【实战】
C++实现二叉树最大路径和的递归算法 _ 路径计算与回溯逻辑【实战】

说实话,二叉树最大路径和这道题,很多人在写递归时都会卡在一个点上:到底该返回什么?答案很简单——你得把「单侧贡献」和「全局路径」拆开算。每个节点最多只能向上传递一条路径,这就决定了递归函数只负责返回能给父节点的最大单侧增益;而跨左右子树的“山峰形”路径,也就是左→根→右那种,必须单独更新全局最大值。

C++ std::span在原始数据包流解析的应用 _ 提升内存访问安全性【详解】
C++ std::span在原始数据包流解析的应用 _ 提升内存访问安全性【详解】

std::span 确实能安全解析原始数据包,但有个关键前提:它不能脱离底层缓冲区的生命周期。用错了就是悬垂指针的问题——不是直接崩溃,而是读到随机字节,这类 bug 最难排查。 从网络或文件读取后如何有效构造 span 先梳理几个核心判断:直接拿 fread() 或 recv() 返回的裸指针来构

C++ std::span在TCP协议报文解析应用 _ 安全内存视图详解【详解】
C++ std::span在TCP协议报文解析应用 _ 安全内存视图详解【详解】

recv() 后怎么安全构造 std::span 直接用栈缓冲区搭配 recv() 来构造 std::span,其实是高危操作。常见的坑有两个: 像这样的代码:char buf[65536]; int n = recv(sock, buf, sizeof(buf), 0); auto sp = st

C++实现模板自动注册的工厂模式 _ 宏定义与Map注册技巧【源码】
C++实现模板自动注册的工厂模式 _ 宏定义与Map注册技巧【源码】

C++工厂模式中用std::map注册模板类时,静态成员因未实例化常导致链接错误。通过宏触发静态局部变量初始化可解决注册问题;注册键优先使用std::type_index,跨模块时需改用统一字符串键并显式调用注册函数。

C++实现高性能优先级任务分发系统 _ 基于工作窃取算法的思路【源码】
C++实现高性能优先级任务分发系统 _ 基于工作窃取算法的思路【源码】

先说结论:要在 C++ 里实现一套“高性能优先级任务分发 + 工作窃取”机制,std::priority_queue 基本上是不能直接塞进多线程任务池里用的。而像 tbb::task_group 或 folly::CPUThreadPoolExecutor 这类现成的调度框架,也不是天生就支持优先级

C++如何统计进程占用的所有句柄类型 _ 句柄枚举与分析【实战】
C++如何统计进程占用的所有句柄类型 _ 句柄枚举与分析【实战】

利用NtQuerySystemInformation枚举进程句柄时,需启用SeDebugPrivilege权限并匹配系统架构。通过SystemExtendedHandleInformation获取ObjectTypeIndex,再查表映射类型名。需注意版本兼容性、权限陷阱及防病毒软件干扰。

Mac软件 更多
讯飞智作 网页版
讯飞智作 网页版
Windows/ macOS/ Linux

讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

火山引擎 网页版
火山引擎 网页版
Windows/ macOS/ Linux

火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

Aperty macOS版
Aperty macOS版
macOS

Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

WINDOWS 更多
讯飞智作 网页版
讯飞智作 网页版
Windows/ macOS/ Linux

讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

火山引擎 网页版
火山引擎 网页版
Windows/ macOS/ Linux

火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

PixTV 网页版
PixTV 网页版
Windows

PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。

精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。