我是靠谱客的博主 炙热冥王星,最近开发中收集的这篇文章主要介绍SystemVerilog队列vs数组01队列(Queue),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

在文章《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)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部