删除动态数组中特定索引的方法
Method to delete particular index in dynamic array
是否有任何其他方法可以从动态数组中删除特定索引值?
这是我删除数组 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
是否有任何其他方法可以从动态数组中删除特定索引值?
这是我删除数组 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