概述
在文章《SystemVerilog的那些数组》中对SV中各类数组做了介绍和区分。除了数组,SV还提供了一种叫队列的复合数据结构。
队列跟数组很像,都可以用来作为多个数据的容器,但同时又拥有自己的优势特性。本文将介绍队列的特性和使用方法,最后再总结SV中数组和队列在使用选择上的一些考虑因素。
01队列(Queue)
- 队列有哪些基本特性?跟数组又有哪些区别?
队列是可变长的、有序的、连续存放的同类数据集合。对队列中任意元素的访问,以及在队列头和尾进行元素增删操作几乎没有额外的时间开销,但是对队列中间的元素的增删操作就不一样了。
可以看出来,队列中的数据元素必须是相同数据类型的,这个特点跟所有数组都是一样的。而有序性,跟定长数组和动态数组是一样的;可变性,跟关联数组一样。
可变性,指的是队列允许在仿真中对元素进行增删操作,从而导致该数据结构的大小是可变的。但队列为了同时具备有序性,借鉴了链表(Linked list)数据结构的特点,它需要更多的指针来维系元素的先后关系。
- 链表跟队列又是什么关系?为什么不直接用链表?
队列中的数据元素是连续存放的,这也是它跟关联数组和链表的区别。在之前SV还是支持链表的,在IEEE 1800-2005及之前的SV标准中还能看到。
原来SV定义的链表结构是一个参数化类,类似于C++编程中的STL(standard template library)列表容器结构。链表的节点不是连续存放的,链表靠指针维系顺序,它可以是单向的或者双向的,即每一个节点除了数据本身,还带了两个指针分别指向上一个节点和下一个节点或者只有
最后
以上就是炙热冥王星为你收集整理的SystemVerilog队列vs数组01队列(Queue)的全部内容,希望文章能够帮你解决SystemVerilog队列vs数组01队列(Queue)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复