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

System verilog 动态数组中删除特定索引的方法,system-verilog,System Verilog,是否有其他方法可以从动态数组中删除特定的索引值 这是我的eg,用于删除数组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

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

这是我的eg,用于删除数组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

不可以。动态阵列设计为作为一个整体进行分配。队列是您想要的,它们是专门为一次添加和删除一个元素而设计的

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