SystemVerilog队列vs数组

在文章《SystemVerilog的那些数组》中对SV中各类数组做了介绍和区分。除了数组,SV还提供了一种叫队列的复合数据结构。
队列跟数组很像,都可以用来作为多个数据的容器,但同时又拥有自己的优势特性。本文将介绍队列的特性和使用方法,最后再总结SV中数组和队列在使用选择上的一些考虑因素。

01队列(Queue)

  • 队列有哪些基本特性?跟数组又有哪些区别?

队列是可变长的、有序的、连续存放的同类数据集合。对队列中任意元素的访问,以及在队列头和尾进行元素增删操作几乎没有额外的时间开销,但是对队列中间的元素的增删操作就不一样了。

可以看出来,队列中的数据元素必须是相同数据类型的,这个特点跟所有数组都是一样的。而有序性,跟定长数组和动态数组是一样的;可变性,跟关联数组一样。

可变性,指的是队列允许在仿真中对元素进行增删操作,从而导致该数据结构的大小是可变的。但队列为了同时具备有序性,借鉴了链表(Linked list)数据结构的特点,它需要更多的指针来维系元素的先后关系。

  • 链表跟队列又是什么关系?为什么不直接用链表?

队列中的数据元素是连续存放的,这也是它跟关联数组和链表的区别。在之前SV还是支持链表的,在IEEE 1800-2005及之前的SV标准中还能看到。

原来SV定义的链表结构是一个参数化类,类似于C++编程中的STL(standard template library)列表容器结构。链表的节点不是连续存放的,链表靠指针维系顺序,它可以是单向的或者双向的,即每一个节点除了数据本身,还带了两个指针分别指向上一个节点和下一个节点或者只有

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值