
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
摘要:适配器模式将类接口转换为客户期望的接口。STL中stack和queue是容器适配器,默认使用deque作为底层结构。deque是双端队列,由分段连续空间组成,通过中控数组管理,支持O(1)时间复杂度的头尾操作。相比vector和list,deque在头尾插入删除效率高且空间利用率好,但不适合遍历和中部操作。STL选择deque作为stack和queue的底层容器,因其完美适配这两种数据结构只
本文详细介绍了如何实现C++ vector容器的迭代器功能,重点包括正向迭代器和反向迭代器的实现方法。正向迭代器部分通过指针类型定义iterator和const_iterator,提供begin()和end()接口。反向迭代器则封装为独立的Reverse_Iterator类,通过运算符重载实现反向遍历。文章还探讨了迭代器失效问题及解决方案,并展示了insert、erase等关键操作的实现细节。整体
老样子,由于迭代器部分的实现需要绕一下脑子,并且和之前vector的模拟实现中的迭代器设计方式不一样,因此我单独把迭代器部分的设计拿出来。要模拟实现c++stl的list容器,首先得知道它是双向带头循环列表,就像下面这张图一样。由于正向迭代器和反向迭代器的++和--的方向不一致,因此单独设计出正向迭代器和反向迭代器。
本文介绍了C++11中unordered系列关联式容器,重点分析unordered_map的实现原理与使用方式。unordered_map基于哈希表实现,提供O(1)平均复杂度的查询效率,相比红黑树结构的map在查找性能上更具优势。文章详细讲解了unordered_map的构造方法、容量管理、迭代器使用规则、元素访问接口以及增删改查操作,特别强调了哈希表的扩容机制对迭代器有效性的影响。通过对比op
摘要:C++11引入Lambda表达式实现函数式编程风格,核心目标是实现零开销的匿名函数。编译器将Lambda转换为匿名类,捕获变量作为成员,保证性能与手写functor一致。C++14新增初始化捕获功能,支持移动语义和临时对象创建,解决了资源管理和生命周期问题。泛型Lambda允许参数使用auto,增强了通用性。使用时需注意引用捕获的生命周期风险,建议短生命周期用[&],长生命周期用[=
摘要:vector是C++中的动态数组容器,支持高效随机访问和动态扩容。它采用连续内存存储元素,通过预分配额外空间来优化插入操作。主要功能包括:构造函数创建空/指定大小的容器;size()/capacity()获取大小/容量;resize()/reserve()调整空间;push_back()/pop_back()进行尾部操作;insert()/erase()实现插入删除;迭代器遍历元素。使用时需
本文详细介绍了在Windows系统中配置WSL2和Ubuntu22.04环境,并安装ROS2的完整流程。主要内容包括:1)启用Windows子系统功能;2)NVIDIA显卡驱动安装;3)Ubuntu22.04安装;4)使用鱼香ROS脚本一键安装ROS2;5)验证ROS2安装;6)针对独立显卡用户的CUDA环境配置和显卡切换设置。重点解决了WSL2环境下NVIDIA独显的调用问题,通过环境变量设置实
摘要:C++11/14/17通过模板元编程(TMP)将模板能力从泛型编程提升到编译期计算维度,实现了零运行时开销的高性能抽象。std::tuple作为TMP的经典应用,解决了多返回值问题,C++17的结构化绑定极大提升了易用性。SFINAE是TMP的核心规则,配合type_traits工具包实现编译期类型检查。TMP通过模板递归、特化等机制在编译期完成计算和代码生成,相比运行时计算具有性能优势。文
本文全面介绍了C++11到C++17中的并发编程机制,包括线程管理(std::thread)、线程局部存储(thread_local)、互斥锁(std::mutex)及其RAII包装器(std::lock_guard/unique_lock/scoped_lock)、条件变量(std::condition_variable)、异步任务(std::async/future/promise)和无锁编程
C++智能指针发展与应用指南 摘要:本文系统介绍了C++智能指针的发展历程与技术要点。从C++98手动内存管理的缺陷出发,详细解析了RAII机制和智能指针原理。重点讲解了三种核心智能指针:unique_ptr(独占所有权,零开销)、shared_ptr(共享所有权,引用计数)和weak_ptr(解决循环引用)。文章对比了各指针特性,指出auto_ptr因潜在风险已被废弃,强调应优先使用make_u







