手写数据结构
文章平均质量分 73
PGZXB
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
使用C++写线程安全队列
引 STL的容不是线程安全的,我们经常会有需求要求数据结构线程安全,比如写生产者消费者模型的时候,就要求队列线程安全。 利用std::queue和C++线程标准库的一些组件(mutex,condition_variable),可以写一个线程安全的队列ConcurrenceQueue 定义基本结构 需要4个函数 push,入队; pop,出队并返回原来对头的元素,如果为队空则阻塞; tryPop,出队并返回原来对头的元素,如果队空返回空(使用智能指针作返回类型); empty,返回是否为空,实则没啥用,原创 2021-03-06 19:01:19 · 1349 阅读 · 0 评论 -
使用C++手写队列 - Queue
使用C++手写队列 我们使用C++写过了Vector、Stack,这篇文章我们来写一下队列Queue; Queue的特点是先进先出,或者说满足这一特性的我们可以称之为队列; 和栈Stack一样,Queue只是定义了一组操作,满足一系列操作的就可以称为队列,此次我们采用顺序表进行实现,即对C++的动态数组进行简单的封装并且提供一系列队列应有的操作; 在我们实现Stack的时候,我们利用了我们写的Vector,那么为什么这次不继续使用而是从最基本的动态数组入手呢。这是因为Queue的特性是先进先出,即队尾进,原创 2021-01-21 18:22:39 · 1786 阅读 · 0 评论 -
使用C++手写栈 - Stack
使用C++手写栈 在(一)中,对动态数组进行了简单的封装,实现了简易Vector, 这次不妨就来实际用一下我们的Vector。 无论是否学过数据结构,你大概都会听说过"栈",栈最主要也是最重要的特性就是FILO – 先进后出,或者说,满足先进后出的就是栈(Stack),所以Stack与我们说的vector、list、map等不同,Stack只定义了一组操作,只要实现了这些操作就是所谓栈,底层的实现显得不那么重要。 所以,我们先来定义一个接口IStack,然后再用其他的数据结构实现。 一个栈所需的操作主要有原创 2020-08-15 14:33:29 · 1353 阅读 · 0 评论 -
手写简易顺序表 - SimpleVector
使用C++手写简易顺序表 在C++的STL中最常用的数据结构可谓是std::vector了, vector弥补了数组不可以动态扩展的缺陷并且保证了储存在连续的内存块中,使访问效率很高。 std::vector就是标准的顺序表,类似的还有Java中的ArrayList,那么他们是如何实现的呢? 这里,我们就来一起实现一个简易的顺序表。要说明的是我们的vector并不包含一些算法譬如sort,同时也不提供迭代器,前者属于算法的范畴,容易让我们关注点转移,后者需要符合STL中的迭代器的标准,涉及一些STL的高级原创 2020-08-12 22:17:58 · 353 阅读 · 0 评论
分享