c++
文章平均质量分 73
mxpan
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
现代C++ 文件系统库
C++17标准引入的std::filesystem库为文件系统操作提供了跨平台解决方案。该库源自Boost.Filesystem,实现了路径处理(path类)、文件属性查询、目录遍历等核心功能,支持自动路径标准化、递归目录扫描和文件操作。通过RAII机制和系统API封装,既保证了安全性又提升了性能。使用中需注意:1)路径分隔符的跨平台适配;2)异常处理;3)性能优化如状态缓存。典型案例包括构建安全路径、递归搜索文件、统计目录大小等,显著简化了原有依赖平台API的复杂操作。原创 2025-06-29 17:45:11 · 466 阅读 · 0 评论 -
现代 C++ 并发编程
C++并发编程从传统多线程到现代协程的演进历程:C++11标准化了线程管理、同步原语和原子操作,解决了传统API的平台依赖问题;C++17引入读写锁优化并发访问;C++20协程提供了轻量级并发方案。文章详细介绍了线程创建/管理、同步机制(互斥锁、条件变量)、无锁编程(原子操作)、线程池实现及协程应用,并给出最佳实践建议:避免共享状态、细粒度锁设计、异常安全和性能调优。现代C++已形成包含线程管理、同步机制、无锁编程和协程的完整并发体系,为开发者提供了丰富的工具选择。原创 2025-06-28 15:47:02 · 713 阅读 · 0 评论 -
现代 C++ 智能指针与内存管理
摘要:本文系统讲解了C++智能指针的核心概念与应用。首先分析了裸指针的内存泄漏、双重释放等风险,引出基于RAII原则的智能指针解决方案。重点剖析了三种智能指针:独占所有权的unique_ptr、共享所有权的shared_ptr及其引用计数机制,以及解决循环引用的weak_ptr。文章详细说明了各种智能指针的创建方式、所有权转移、自定义删除器等实用技巧,同时对比了它们的性能差异和适用场景。最后给出多线程环境下的使用建议和C++20新增功能,强调智能指针对提升代码健壮性和可维护性的重要意义。原创 2025-06-27 10:19:57 · 1152 阅读 · 0 评论 -
现代 C++ 容器深度解析及实践
C++11引入的新容器特性摘要:std::array融合C数组效率与STL接口,适合固定长度场景;std::forward_list采用单向链表降低存储开销。无序容器基于哈希表实现O(1)复杂度查找,需注意哈希函数定制与负载因子优化。std::tuple支持多类型聚合,配合结构化绑定简化操作。建议根据场景选择容器:有序遍历用map/set,高频查找用unordered_map,固定数组用array,频繁头部操作用forward_list。原创 2025-06-26 11:32:00 · 764 阅读 · 0 评论 -
C++ 中使用 SQLite 数据库深度解析
本文介绍了在C++项目中高效使用SQLite数据库的完整指南。主要内容包括:SQLite环境搭建、基础操作(数据库连接、SQL执行、数据查询)、预处理语句优化、事务处理机制、错误资源管理、性能优化技巧(索引/缓存配置)、自定义函数扩展以及多线程安全配置。文章通过代码示例详细演示了关键API的使用方法,并强调预处理语句防注入、事务批量操作、RAII资源管理等最佳实践。针对不同应用场景,提供了从基础到高级的全面技术方案,帮助开发者在C++项目中充分发挥SQLite轻量高效的优势。原创 2025-06-24 09:18:21 · 1696 阅读 · 0 评论 -
c++中左值与右值
C++中的左值(lvalue)和右值(rvalue)是区分表达式属性的关键概念。左值表示具名的持久对象,可以赋值和取地址(如变量);右值表示临时对象,只能出现在赋值右侧(如字面值或表达式结果)。C++11进一步将右值分为纯右值(prvalue)和将亡值(xvalue),后者通过std::move实现移动语义。左值引用(T&)只能绑定左值,右值引用(T&&)专门处理右值,而const T&可以绑定两者。正确理解这些概念对实现移动语义、完美转发和优化资源管理至关重要。原创 2025-06-22 14:55:26 · 965 阅读 · 0 评论 -
c++中auto与decltype使用
C++11类型推导特性对比摘要:auto用于变量类型推导,忽略顶层const和引用;decltype精确获取表达式类型,保留所有类型信息;decltype(auto)结合两者优势。auto简化代码,decltype适用于模板编程,decltype(auto)适合精确转发。使用时需注意:auto需初始化,decltype区分变量名和表达式,decltype(auto)保留引用特性。三者各有所长,应根据场景选择使用。原创 2025-06-22 10:10:09 · 270 阅读 · 0 评论 -
STL 容器迭代器失效问题分析与解决方案
C++ STL容器迭代器失效问题解析:本文详细分析了vector和map两种容器删除元素时的迭代器失效机制。vector因连续内存特性,删除元素会使其后所有迭代器失效,需利用erase返回值更新迭代器;map因红黑树结构,仅被删除节点的迭代器失效,可采用先递增再删除或后置递增方式处理。文章通过代码示例对比了错误和正确的删除方法,为有效避免迭代器失效问题提供了实用解决方案,对提升程序健壮性具有重要参考价值。原创 2025-06-21 20:11:19 · 533 阅读 · 0 评论 -
C++ 单例模式一种实现方式
摘要:单例模式是一种确保类只有一个实例并提供全局访问点的设计模式。其实现关键包括:私有构造函数、静态成员变量存储实例、静态方法获取实例。文章以C++为例展示了线程安全的单例实现,采用双重检查锁定机制保证多线程环境下的安全性,同时优化了性能。代码包含实例创建、销毁方法,并通过保护构造函数防止外部实例化。该实现兼顾线程安全和效率,适用于配置管理、日志记录等需要全局唯一实例的场景。原创 2025-06-20 19:34:32 · 528 阅读 · 0 评论 -
VC++ 与 Golang 的协作:实现 HTTP 文件传输服务
本文介绍了如何通过VC++调用Golang构建的HTTP文件传输服务实现跨语言协作。Golang部分提供了文件上传下载功能,通过导出函数StartHTTPServer、StopHTTPServer和UpdateDownFileMap供VC++调用。VC++通过动态链接库方式加载Golang服务,使用互斥锁确保线程安全。项目采用Golang编译为动态链接库(set CGO_ENABLED=1 go build -buildmode=c-shared)后,由VC++程序LoadLibrary加载调用的技术方案,原创 2025-06-20 09:58:16 · 2424 阅读 · 0 评论
分享