首页 > 其他分享 >数组&队列&关联数组的总结

数组&队列&关联数组的总结

时间:2023-11-10 13:56:20浏览次数:35  
标签:idx 队列 关联 int dyn descend 数组 d2

定宽数组:可以直接赋值,也可以先声明再赋值 其中还有多维数组

int array2[0:7][0:3];int array3[8][4];// 先个后位 
int ascend[4]='{0,1,2,3};
int descend[5];
descend='{4,3,2,1,0};
descend[0:2]='{5,6,7};
ascend='{4{8}};
descend='{9,8,default:-1};

数组的声明全在左侧时为合并数组

bit [4:0][3:0]b;//简单记住先个后位,五个b,每个b有4位

     

 

 

数组声明在两侧时为非组合型数组

 

bit [4:0]a[5];//按顺序存放从上到下,a[4:0][0]如此,一直存放到a[4:0][4],简记非合并数组反过来是位个
bit [4:0][3:0]b[3];//三个合并数组的非合并数组(两种类型的混用)

32bit是一个字

四值逻辑占2bit,一个字节占32bit

int[4:0][3:0]b[4:0][3:0];//先字母右侧再字母左侧,从左到右,高到低

数组的应用有for与foreach

数组的复制 :合并数组之间复制 会扩展右侧的操作数来对左侧的操作数赋值

       非合并数组的话,需要严格对照操作数的维度

 

动态数组

特点:可以在仿真时灵活调节数组大小

 先声明--再分配--操作

int dyn[],d2[];//声明动态数组
initial begin
dyn=new[5];//分配元素
foreach(dyn[j]) dyn[j]=j;//初始化
d2=dyn;//复制动态数组
d2[0]=5;//修改复制值
$display(dyn[0],d2[0]);//显示0,5
dyn=new[20](dyn);//分配20个数值并复制
dyn=new[100];//分配100个并删除旧值
dyn.delete();//删除所有
end

队列

结合了链表与数组的优点,可以在任何地方添加或删除元素,通过索引实现对任意元素的访问。
声明[$];队列标号0-$,不需要new[]创建空间,开始时空间为0,按照队列方式增减元素。

int j=1,q2[$]={3,4},q[$]={0,2,5};
initial begin
q.insert(1,j);//在1号位之前插入j的值
q,insert(3,q2);
q.delete(1);//删除q第一个元素
//更快运行速度
q.push_front(6);//头部插入
j=q.pop_back();//尾部取出
end

关联数组

 

在使用超大容量数组时,使用空间有限,大量开辟会造成浪费。关联数组可以用来保存稀疏矩阵的元素,当需要非常大的地址空间寻址时,指为实际写入的元素分配空间,因此占用空间小得多。在其他语言中有类似的存储结构被称之为哈希(Hash)或词典(Dictionary),可灵活存储键值和数值。

 

bit [63:0]assoc[int],idx=1;
initial begin
repeat(64)begin
assoc[idx]=idx;
idx = idx << 1;
end
foreach (assoc[i]) begin
$display("assoc[%h]=%h",i,assoc[i]);
end
assoc.first(idx);
$display("%h",idx);
end

 

 

  

标签:idx,队列,关联,int,dyn,descend,数组,d2
From: https://www.cnblogs.com/hc-zheng/p/17823880.html

相关文章

  • 深层次分析字符数组和字符串的区别是什么?
    前言(1)休闲时刻刷B站,看到一个卖课的,发视频问,chararr1[]={‘H’,‘E’,‘L’,‘L’,‘O’};和chararr2[]=“HELLO”;区别是什么。(2)看那个卖课博主一顿分析,最后成功得出:字符串比字符数组末尾多一个’\0’。(3)很好,成功浪费我生命的3分钟。无语,就这水平还卖课。如果各位有幸看到这货,......
  • 剑指 Offer 66. 构建乘积数组
    文章目录题目描述思路分析完整代码题目描述给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B[i]的值是数组A中除了下标i以外的元素的积,即B[i]=A[0]×A[1]×…×A[i-1]×A[i+1]×…×A[n-1]。不能使用除法。思路分析将所有的数都乘起来得到一个总乘积,然后求......
  • matlab将数组值划分为两类
    例如:大于0的处理为1,小于0的处理为-1.当然,可以选择循环结构和选择结构,但是效率会很低。这里直接使用逻辑语句完成。%不使用循环语句,将数组内值划分为两类clc;clearvars;a=[-0.1422,-0.0433,0.1131,0.0583,0.0109,-0.0863,0.0411,-0.0641,-0.1055,......
  • 2023-08-24:请用go语言编写。给定一个长度为n的数组arr, 现在你有一次机会, 将其中连续
    2023-08-24:请用go语言编写。给定一个长度为n的数组arr,现在你有一次机会,将其中连续的K个数全修改成任意一个值,请你计算如何修改可以使修改后的数列的最长不下降子序列最长。请输出这个最长的长度。最长不下降子序列:子序列中的每个数不小于在它之前的数。1<=k,n<=10^5,1<=a......
  • Kafka队列
    ......
  • C++中获取数组长度
    #include<iostream>usingnamespacestd;template<classT>intlength(T&arr){//cout<<sizeof(arr[0])<<endl;//cout<<sizeof(arr)<<endl;returnsizeof(arr)/sizeof(arr[0]);}intmain(){i......
  • PreTrainedModel 中 from_pretrained 和 load_state_dict 的关联
    from_pretrainedAutoTokenizer.from_pretrained:从path/vocab.json中加载tokenizerAutoConfig.from_pretrained:从path/config.json中加载模型配置信息更新模型配置信息:model=Model(config)PreTrainedModel.from_pretrained:加载模型结构和模型参数load_checkpoint......
  • 算法day1数组|力扣704二分查找,27移除元素
    数组基础理论数组是存放在连续内存空间上的相同类型数据的集合。可以通过下标轻松获取数据,但是增删元素的时候需要移动其他元素Vector和array的区别vector的底层实现是array,但是vector是容器不是数组数组的元素不能删除,只能覆盖小技巧:取中间intmid=l+r>>1;//有时候怕溢......
  • 7--26. 删除有序数组中的重复项
    第一次提交,两个测试用例都通过了,最后提交结果显示为【超出时间限制】,不通过的测试用例为nums=[1,1]于是,改加了if判断语句但还是提交结果显示【超出时间限制】,不通过的测试用例为nums=[1,2,2]卒!!!!!!classSolution{publicintremoveDuplicates(int[]nums){......
  • 树状数组(Binary Index Tree)
    一、问题引入LoguP3374模版题--树状数组。初始化一个数组,接下来进行若干次以下操作:单点修改:将某个元素的值进行修改区间访问:返回该区间的总和问题分析如果通过简单索引操作,“1”的时间复杂度为O(1),“2”的时间复杂度为O(n),其中如果使用一个dp表的方式来存储前n项之和,那么“......