
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
输入: nums = [1,2,3,4,5,6,7], k = 3。- 输入:nums = [-1,-100,3,99], k = 2。- 向右轮转 1 步: [7,1,2,3,4,5,6]- 向右轮转 2 步: [6,7,1,2,3,4,5]- 向右轮转 3 步: [5,6,7,1,2,3,4]- 向右轮转 1 步: [99,-1,-100,3]- 向右轮转 2 步: [3,99,-1,-100

-----别只会用 vector,来看看它是怎么咬人的

本文详细记录了从零手写C++ std::list容器的完整过程,包括底层双向链表设计、迭代器封装原理、const迭代器合并技巧等核心实现。文章通过16个章节系统讲解了list的节点结构、迭代器本质、深拷贝实现等关键技术点,特别剖析了链表与顺序表的本质差异。作者不仅提供了可直接运行的完整代码,还分享了实际开发中遇到的典型问题(如迭代器失效)及其解决方案。该实现适合学习C++数据结构的开发者参考,能帮

1. 派生类赋值运算符里忘加基类作用域和的区别是前者调用基类,后者在Student的作用域里找到的还是自己,无限递归,直接栈溢出。2. 析构函数自动调用的顺序析构顺序是先派生类再基类,不需要手动调用基类析构。如果手动调用了,基类会被析构两次,产生未定义行为。3. 虚继承中虚基类由最终派生类构造菱形虚继承里,中间层(Student、Teacher)构造函数里对 Person 的调用会被忽略,Pers

多态├── 编译时多态:函数重载、函数模板(静态绑定)└── 运行时多态:虚函数 + 基类指针/引用(动态绑定)├── 构成条件│├── 基类的指针或引用调用│└── 被调函数是虚函数且完成重写├── 虚函数重写细节│├── 三要素完全相同(返回值、函数名、参数)│├── 协变:返回值可以是基类→派生类指针/引用│├── 析构函数:基类析构必须加 virtual,防止资源泄漏│├── overri

/ 仿函数:按 priority 降序(数字大的先出)// 注意:和 sort 的 cmp 语义一致的底层是堆(heap),默认用vector存数据,通过push_heappop_heap维护堆序。它和 stack/queue 一样是容器适配器,但底层容器是 vector 而不是 deque。stackqueue顺序LIFOFIFO按优先级默认底层dequedequevector(堆)可用底层to

class 派生类名 : 继承方式 基类名Person叫基类,也叫父类;Student叫派生类,也叫子类。两种叫法都对,是翻译来源不同导致的。// public 继承(最常用)// protected 继承// private 继承class关键字定义的类默认继承方式是privatestruct定义的类默认是public。实际写代码时建议显式写出继承方式,不要依赖默认值,可读性更好也不容易出错。派

通过 phead 和 ptail 实现 O(1) 入队和出队。(Queue)是一种先进先出(FIFO)的线性数据结构。单链表需要,方便头插,头删 ,这种频繁改变头节点的操作。需要循环队列(因为头删是,需要向前挪动)说明初始化为什么只初始化 Queue。这里解释为什么链表不能一次 free。却访问 pq->phead->next。为什么队列不需要头节点(哨兵节点)?入队 → → → → → → 出队








