- 博客(10)
- 收藏
- 关注
原创 STL 容器适配器详解:stack 与 queue
到这里,stack、queue 和 priority_queue 的概念、实现原理以及它们为什么“看起来简单却不能遍历”,我们都已经讲清楚了。你会发现,它们本质上并不是新的容器,而是建立在其他顺序容器之上的“使用方式约束”。理解了这一点,不管是自己模拟实现、刷OJ题,还是面试手撕代码,都会轻松很多。这一篇就到这,下一篇我们继续搞点更硬核的东西。
2025-10-20 22:09:40
693
原创 深入理解 STL::list:链表的底层原理与使用场景
链表是一种将数据通过指针连接在一起的数据结构。它不像数组那样将所有元素保存在连续的内存中,而是每一个元素也就是结构体(称为节点)都通过指针指向下一个节点{}T _data;// 存储实际内容// 指向前一个节点的指针// 指向下一个节点的指针list 的典型特性:插入 / 删除效率高:O(1) 时间复杂度,只需要删除节点并修改指针即可不支持随机访问:不能像数组一样使用下标,list[i]支持双向迭代器(可以从前往后,也可以从后往前遍历)每次访问某个位置都要从头到尾一个个跳过去。
2025-09-29 21:36:25
910
原创 从零实现 C++ vector:原理、实现与优化
本文通过模拟实现的方式,从构造、容量管理、访问、修改等多个维度,逐步揭示了 vector 的内部结构与核心机制。vector 是一个既简单又强大的容器,掌握它不仅能帮助我们更高效地开发程序,也为理解 C++ 更复杂的数据结构打下坚实基础。
2025-07-15 14:52:34
740
原创 C++ string 全面解析与模拟实现
在 C++ 中,迭代器(iterator)是 STL 中的核心概念之一。可以将它简单理解为可以在容器上顺序移动的指针。不同容器对迭代器的实现方式不同:某些容器将其封装为类,而字符串我们则可以视为简单的 char* 指针。string类为我们提供了四种类型的迭代器:正向迭代器, 反向迭代器, const正向迭代器, const反向迭代器end() 指向容器中最后一个有效元素的后一个位置,而 rend() 指向第一个有效元素前一个位置的内存地址。这两个位置都不能直接解引用,否则会导致未定义行为。
2025-06-05 15:17:16
840
原创 C++ 内存管理:原理、机制与面试重点
自定义类型 (结构体, 类) 在分配时除了需要分配空间, 还需要调用对应的构造函数, 在释放时也要调用析构函数, 这也是 C 和 C++ 内存管理的本质区别之一public::_a(a)cout << "MyClass 的构造函数调用了" << endl;~MyClass()cout << "MyClass 的析构函数调用了" << endl;int main()// 调用构造函数对类的成员进行初始化delete obj;// 释放时调用类的析构函数。
2025-05-23 14:32:14
1058
原创 C++类和对象(下):深入特性与优化
在本篇文章中,我们深入探讨了类和对象的高级特性,从初始化列表到匿名对象,每一个概念都揭示了 C++ 设计哲学的深度与精妙。
2025-01-13 15:10:16
859
原创 C++类和对象(中):默认成员函数全解
构造函数的名字必须与类名相同。构造函数没有返回值。构造函数可以在对象创建时自动调用,用于对象的初始化。构造函数可以重载如果类中没有显式定义构造函数,则C++编译器会⾃动⽣成⼀个⽆参的默认构造函数,⼀旦⽤⼾显 式定义编译器将不再⽣成。public:// 构造函数的名字必须与类名相同。Student() // 构造函数没有返回值cout << "无参数的构造函数执行了" << endl;//构造函数可以重载_age = age;
2024-12-11 15:13:02
1895
原创 C++类与对象(上):基础知识与实例
class是用于定义类的关键字,Student为类的名称,{}中包含类的主体部分。注意,类定义后需要以分号结束。类的组成部分称为成员:变量称为属性或成员变量,函数称为方法或成员函数。为了区分成员变量,通常在变量前添加特殊标识,如加前缀m_或后缀。虽然C++对此没有强制规定,但遵循团队或公司惯例是良好的实践。在C++中,struct不仅兼容C中的结构体用法,还升级为类的形式,支持定义函数。尽管如此,建议使用class来定义类以符合常规编程习惯。类中定义的成员函数默认是inline,有助于提升运行效率。
2024-12-06 10:54:01
1680
原创 C++的历史与发展:从C到现代编程语言的演变
如果你是一个 C++ 初学者,想快速查找常见的标准库函数和语法,更合适。如果你需要更深入的 C++ 知识,尤其是关于新标准的详细文档,或是查找 C++ 的最新特性,是更好的选择,特别是它的中文版,能够提供更全面的翻译和及时更新。
2024-11-27 14:52:34
946
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅