- 博客(82)
- 收藏
- 关注
原创 Linux网络——TcpServer
基于上一篇套接字与UDP的博客,继续讲解了TCP服务,并着重讲解了两种服务的差异化,并进一步对TCP的服务端与客户端做了相应的通用封装。
2024-07-18 20:22:12
1373
3
原创 Linux多线程
对线程概念,线程与进程区别与联系进行了讲解,介绍了有关线程控制,线程创建,线程终止,线程等待的函数,封装了Thread类与ThreadPool类。
2024-07-16 21:14:07
742
原创 STL库 —— unordered_set与unordered_map的封装
对HashBucket进行封装,使之兼容unordered_set与unordered_map,并完成unordered_set与unordered_map的简单功能
2024-05-26 22:54:57
1206
原创 C++数据结构——哈希桶HashBucket
哈希桶(Hash Bucket)是哈希表中用来存储哈希冲突的一个位置。当多个键通过哈希函数映射到同一个索引时,这些键值对被存储在同一个桶中。哈希桶通常采用链表或其他数据结构来存储这些冲突的元素。这种方法被称为“链地址法”,它允许多个键值对共享同一个哈希表索引,从而有效解决哈希冲突问题。
2024-05-26 17:37:33
952
原创 C++数据结构——哈希表HashTable
详细介绍了哈希表的实现,包括哈希表的定义、插入、查找和删除功能的实现。作者解释了哈希表的内部结构,如何处理键值对,以及如何通过扩容来解决哈希碰撞问题。文章还详细讲述了如何对非整数键值进行哈希计算,特别是对于字符串键值使用BKDR哈希函数的方法。此外,还提供了完整的哈希表代码示例和测试用例,以帮助读者更好地理解和实践。
2024-05-24 21:49:48
896
原创 C++数据结构——红黑树
红黑树是一种自平衡二叉搜索树,通过节点的颜色属性(红色或黑色)以及一系列的规则,保证了其高度在最坏情况下为O(log N),从而确保了较高的查询、插入和删除效率。在本文中,我们将详细介绍红黑树的插入操作。
2024-05-15 23:29:44
931
1
原创 STL库 —— string 类的编写
由于历史遗留问题, string 早于 STL 出现,所以 string 并不能属于 STL 库,但是由于其特性和 STL 中的其他容器类似,所以我把它当作 STL 的成员之一。首先先创建一个 .h 头文件 和 .cpp 源文件:在 .h 文件中使用命名空间。
2024-04-05 22:20:58
610
3
原创 C++模板初阶
如果我们想要写一个 Swap 函数,但我们的参数类型可能不同,应该怎么写呢?x = y;y = tmp;x = y;y = tmp;x = y;y = tmp;当我们完成上面的函数时,会不会觉得有点太过繁琐?难道我们不能写一个 Swap 就可以让它实现不同参数的重载吗?其实是可以的,C++ 为我们提供的方法就是模板。类似于现实生活中的模具,我们使用的产品,如鼠标、键盘,成本之一就是开模,如果有了一个模具,各种各样的颜色、材质,都可以使用这一种模具来完成,这就极大的压缩了成本。
2024-04-03 00:14:32
702
原创 滑动窗口算法(1)
滑动窗口其实就是两个同向的指针,不停地有数据进入这两个指针的区间,也不停地有数据要退出这个区间,这个区间在整个数组中来回滑动,故名[滑动窗口]。这样一看,我们的题目就变成了在数组中找到和为 sum - x 的最长连续子数组!若问题分析的对象是[一段连续的区间],我们就可以考虑使用[滑动窗口]解决问题。即找有最长1的区间,该区间0的个数不超过k个。
2024-03-14 09:08:18
338
原创 双指针算法(1)
这是将数组分成两部分的题目,当我们遇到把数组分成若干部分的题目时,首先要想到的是双指针,在之前的学习中,我对对撞指针的题目做的比较多,但是这题如果我们使用对撞指针就无法满足“保持非零元素的相对顺序”这一条件,所以我们就考虑到了快慢指针。根据以上情况,我们设置左右指针,并不断选中最小值然后计算其容积,并让非最小值向内移动,不断重复,并不断更新容积的最大值即可。但是我们要注意,因为 dest 指向已处理部分的最后一个元素,所以 dest 是非零的,交换时使用的是 dest++
2024-03-06 17:17:13
815
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人