logo
publist
写文章

简介

该用户还未填写简介

擅长的技术栈

可提供的服务

暂无可提供的服务

深入浅出C++ STL:从入门到精通的核心指南

如果你问一个C++程序员:“标准库中最重要的部分是什么?STL(Standard Template Library,标准模板库)。STL不仅是一组容器和算法的集合,更是C++泛型编程思想的集大成者。它被誉为C++标准库中的明珠,其设计理念和实现技巧至今仍深刻影响着现代编程语言的发展。正如网上流传的那句话:“不懂STL,不要说你会C++”。无论是面试、日常开发,还是阅读优秀开源项目,STL都是绕不开

文章图片
#c++#开发语言
C++ string 类全攻略:从入门到深扒底层原理

写时拷贝是一种优化策略:在浅拷贝的基础上添加引用计数。多个对象共享同一块内存,只有当某个对象试图修改内容时才真正执行深拷贝。这样可以节省大量拷贝开销,尤其适合频繁复制但很少修改的场景。// 伪代码示意当String对象拷贝时,只是增加引用计数;修改前若发现引用计数 > 1,则复制一份新内存并减少原计数。不过现代 C++ 中由于移动语义和 SSO 的普及,COW 已不再主流。优先使用:不要再用cha

文章图片
#c++#开发语言
C++ stack 和 queue 完全指南:适配器模式与双端队列的奥秘

std::stack是一个容器适配器,它提供后进先出(LIFO)的数据结构。你可以把它想象成一摞盘子:最后放上去的盘子最先被取走。栈只允许在顶部进行插入(push)和删除(pop)操作,访问也只能访问顶部元素(top栈的典型应用场景:函数调用栈(保存返回地址、局部变量)表达式求值(中缀转后缀、逆波兰表达式计算)括号匹配、撤销操作(Undo)等std::queue也是一个容器适配器,提供先进先出(F

文章图片
#c++#适配器模式#算法
C++ list 容器完全指南:从入门到手撕双向链表

list的核心优势:O(1) 的任意位置插入删除,迭代器在插入时永不失效。核心劣势:不支持随机访问,缓存不友好,每个元素额外占用指针内存。使用场景:适合需要频繁增删且不关心索引的场景,如 LRU 缓存、消息队列、邻接表等。迭代器失效:只有删除操作会让指向被删节点的迭代器失效,插入不会。模拟实现:理解list的节点结构、迭代器封装和双向指针维护,是迈向高手的重要一步。学习list不仅能让你熟练使用

文章图片
#c++#list#链表
C++模板进阶:非类型参数、特化、分离编译与优缺点解析

很多 C++ 初学者对模板的认知停留在“泛型容器”或“类型安全的宏替换”。然而,在实际工程中,模板的能力远不止于此:你想实现一个编译期大小的静态数组(类似std::array)吗?那需要非类型模板参数。你想对指针类型、引用类型或特定组合类型做特殊处理吗?那需要模板特化。你想把模板的声明和定义分离到.h和.cpp中吗?你会遇到分离编译的经典错误。你想写出更优雅、编译期更安全的泛型代码吗?那需要了解

文章图片
#c++#开发语言
C++ 继承详解:从入门到深入,彻底搞懂菱形继承与虚继承

继承是面向对象程序设计中的核心概念之一,它让代码复用上升到了类设计的层次。C++ 支持多种继承方式,功能强大,但同时也引入了一些复杂性(比如菱形继承)。本文将从继承的基本概念讲起,逐步深入到默认成员函数、作用域、友元、静态成员,最后详细剖析多继承与菱形继承问题,并给出继承与组合的选择建议。📌 本文基于 C++11 标准,所有代码均已测试验证。继承允许我们在已有类(基类/父类)的基础上创建新类(派

文章图片
#c++#开发语言
C++ 多态深度剖析:从基本概念到底层虚表机制

多态(Polymorphism)是面向对象程序设计的三大特性之一(封装、继承、多态),它使得同一段代码可以根据对象的实际类型表现出不同的行为,极大地提升了程序的可扩展性和可维护性。编译时多态(静态多态,如函数重载、模板)和运行时多态(动态多态,基于虚函数机制)。本文将深入讲解运行时多态,涵盖其概念、实现条件、虚函数重写、纯虚函数与抽象类、底层实现原理(虚函数表、动态绑定)、以及高频面试题和最佳实践

文章图片
#c++
C++异常处理核心知识点全解析

公有继承重写what(),加保存错误信息字符串多态捕获用基类引用// 自定义异常类private:public:// 重写what,严格带 const noexcept overridethrow MyException("除数不能为0");std::cout << "结果:" << a / b << std::endl;int main()try// 多态捕获:基类常量引用std::cout <

文章图片
#开发语言#c++
C++ vector 深度剖析:从入门到模拟实现,避开所有坑

优先使用vector:动态数组是绝大多数场景的最佳选择。善用reserve:提前分配空间,避免频繁扩容。警惕迭代器失效:任何可能改变容量的操作后,原来持有的迭代器都可能失效,务必重新获取。模拟实现是提升内功的最佳途径:亲手实现reservepush_backinserterase,你会对深拷贝、浅拷贝、异常安全有更深理解。不要用memcpy拷贝非 POD 元素:始终使用赋值或拷贝构造。vector

文章图片
#c++#开发语言
    共 12 条
  • 1
  • 2
  • 请选择