- 博客(17)
- 收藏
- 关注
原创 C++ STL 中 map 和 set 的使用详解
本文详细介绍了C++ STL中map和set的使用方法。map和set属于关联式容器,底层通常采用红黑树实现,具有O(logN)的插入、删除和查找效率。set是只存储key的容器,自动去重且默认升序排序;map存储key-value键值对,key不允许重复且默认按key升序排序。文章详细讲解了set/map的构造、遍历、插入、查找和删除操作,并介绍了multiset与set的区别(允许重复元素)。对于map,重点说明了其键值对特性及通过key快速查找value的能力。这些容器在需要高效查找和有序存储的场景中
2026-05-22 11:08:56
367
原创 c++每日一题-数组当中第K个最大的元素
如果数组按降序排列,那么第 k 大元素的位置就是:int target = k - 1;请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。给定整数数组 nums 和整数 k,请返回数组中第 k 个最大的元素。输入: [3,2,3,1,2,4,5,5,6], k = 4。:每次 partition 后,只处理目标下标所在的一边。:每次 partition 后,左右两边都继续排序。输入: [3,2,1,5,6,4], k = 2。这道题可以使用 快速排序的思想 来做。
2026-05-20 14:39:16
42
原创 STL list 详解:底层原理 + 常用接口
在 C++ STL 中,list 是非常重要的序列式容器之一。与 vector 不同:vector 底层是动态顺序表(连续空间);list 底层是双向循环链表。所以vector 擅长随机访问而list 擅长插入和删除。
2026-05-14 23:54:28
216
原创 C/C++ 内存管理详解:从内存分布到 new/delete 原理
在学习 C/C++ 的过程中,内存管理是绕不开的核心知识。栈、堆、静态区到底有什么区别?malloc 和 new 到底差在哪?为什么 delete[] 不能写成 delete?new 底层到底做了什么?如果这些问题没有形成完整体系,后面学习 STL、智能指针、内存池、操作系统时会越来越混乱。这篇文章将系统梳理整个知识链路,帮助你真正建立对内存管理的整体认知。
2026-05-14 20:12:28
550
原创 C++ 手写 priority_queue
在 C++ STL 中,priority_queue 是一个非常常用的容器适配器。它可以让我们快速获取当前优先级最高的元素。默认情况下,STL 的 priority_queue 是一个 大堆,也就是每次 top() 取到的都是最大值。本文我们不直接使用 STL 的 priority_queue,而是自己手写一个简化版本,理解它背后的核心原理:堆。
2026-05-10 10:36:30
335
原创 深入理解堆数据结构:从基础到应用
堆(Heap)是一种特殊的完全二叉树数据结构,它满足堆属性:对于最大堆,每个节点的值都大于或等于其子节点的值;对于最小堆,每个节点的值都小于或等于其子节点的值。// 存储堆元素的数组int _size;// 当前堆中元素个数// 堆的容量} Heap;堆是一种高效的数据结构,特别适合需要频繁访问最大或最小元素的场景。通过向上调整和向下调整算法,堆能够在对数时间内完成插入和删除操作,同时保持堆属性的完整性。
2025-09-29 23:01:08
849
原创 队列(Queue)详解:从概念到C语言实现
/ list.h// 队列节点结构// 队列结构// 队头指针// 队尾指针} Queue;// 函数声明。
2025-09-29 14:58:05
360
原创 深入浅出数据结构之栈—— 基础、实现
/ 指向动态数组int size;// 栈中元素个数// 栈的容量} Stack;栈是一种简单但功能强大的数据结构,它的LIFO特性使其在许多场景下非常有用。动态数组实现的栈可以自动调整大小,既保留了数组的快速访问特性,又提供了灵活性。通过本文的代码实现,我们展示了栈的基本操作和应用场景。栈在计算机科学中有着广泛的应用,包括函数调用、表达式求值、括号匹配等。掌握栈的实现和使用对于理解更复杂的数据结构和算法至关重要。
2025-09-21 22:51:58
525
原创 野指针详解:定义、危害、避免与检测
野指针(Dangling Pointer) 是指向已释放或无效内存区域的指针。这种指针虽然仍然存储着一个地址值,但该地址对应的内存可能已经被系统回收或重新分配,访问它将导致不可预知的行为。下面将给出野指针的典型产生场景牢记在手动管理内存的语言中,警惕野指针是程序员的基本责任。养成良好的指针使用习惯(尤其是释放后置空),并积极拥抱 C++ 的智能指针等现代特性,是写出健壮、安全程序的关键。
2025-08-06 23:32:01
1378
原创 深入浅出数据结构之顺序表—— 基础、实现
int size;//当前有效容量//空间容量}SL;本文详细介绍了顺序表的定义及其特点,以及初始化、插入、删除和查找等基本运算。通过一个简单的C程序实现,展示了顺序表的操作方法。最后,通过一个完整的实例,验证了顺序表的正确性和可靠性。
2025-08-05 23:00:20
1699
原创 数据在类存当中的存储
charshortintintintsigned intlongintint注:1.字符在类存当中存储的是字符的ASCII码值,ASCII码 值是整形,所以字符类型是整形家族2.有符号数的最高位是符号位,正数为0,负数为1。
2023-10-29 23:07:11
122
1
原创 【c语言】——三子棋小游戏
三子棋游戏是一款益智小游戏相信大家都玩过吧,本篇文章将通过c语言来实现这款游戏三子棋游戏的实现//判断输赢if (ret!//判断输赢if (ret!printf("玩家赢\n");printf("电脑赢\n");else {printf("平局");
2023-09-04 09:42:51
243
1
原创 【c语言】:扫雷游戏(超详细教程)
扫雷游戏作为一个经典游戏想必大家都玩过吧,本篇文章将通过c语言来实现这个游戏定义游戏函数:这里定义两个数组,一个数组用来布置地雷另一个数组用来给玩家展示//棋盘初始化//打印棋盘//布置地雷//找地雷。
2023-08-31 22:50:09
3401
1
原创 新人小白的学编程
本人来自成都理工大学,大二暑假开始学习编程。在我看来编程的学习是一个需要长期努力的事情,只有日积月累的大量练撸代码才可以在毕业后拿到一个好的offer。所以我给自己安排的学习目标是每天坚持写代码并且上传搭配gitee上,每天至少花2个小时在学习编程上。在学习的过程中学会使用各种工具和自己动手去解决问题。我希望在我的努力下可以进入。
2023-08-12 23:26:43
111
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅