在动态数组中删除特定索引的方法

时间:2019-04-10 13:12:30

标签: system-verilog

还有其他方法可以从动态数组中删除特定的索引值吗?

这是我要删除的数组a的索引2,我将其存储到数组b

module top;
  bit[3:0] a [];
  bit[3:0] b [];
  int k=0;
  initial 
  begin
    a={5,6,7,8,9};
    foreach (a[i])
      $display ("a[%0d]:%d",i,a[i]);   
     b = new [a.size-1]; 
    foreach (a[i]) begin
      if (i == 2) begin
       continue; 
      end
        b[k++] = a[i]; 
    end
    foreach (b[i])
      $display ("b[%0d]:%d",i,b[i]);
  end
endmodule

输出:

a[0]: 5
a[1]: 6
a[2]: 7
a[3]: 8
a[4]: 9
b[0]: 5
b[1]: 6
b[2]: 8
b[3]: 9

1 个答案:

答案 0 :(得分:0)

不。动态数组被设计为整体分配。队列就是您想要的-它们专门用于一次添加和删除一个元素。

module top;
  bit[3:0] a [];
  bit[3:0] b [$];
  initial 
  begin
    a={5,6,7,8,9};
    foreach (a[i])
      $display ("a[%0d]:%d",i,a[i]);   
     b = a
     b.delete(2);
    foreach (b[i])
      $display ("b[%0d]:%d",i,b[i]);
  end
endmodule