03. queue型配列
(更新:2021/02/05)
queue型配列(以降queue)は、配列をFIFOのように扱うためにメソッドが用意された配列です。例えば、10個のデータを順番に入れておき、それを後で、入れた順番で取り出したいといったケースで使用します。
定義(definition):
data_type $array_name [$];
配列サイズ(array size)
$array_name.size()
挿入(insert)
$array_name.insert(index, item)
削除(delete)
$array_name.delete(); //全削除 (delete all)
$array_name.delete(index); //指定したindex部のみ削除 (partial delete)
アイテムを先頭から取り出し(pick up item from head)
$array_name.pop_front()
アイテムを最後尾から取り出し(pick up item from tail)
$array_name.pop_back()
アイテムを先頭に追加(add item to head)
$array_name.push_front()
アイテムを最後尾に追加(add item to tail)
$array_name.push_back()
queueは未初期化時、配列はemptyになっています。
--- test.sv ---
module test;
initial begin
int array[$];
int elements;
elements = 5;
/// push 5 items
for(int i=0; i<elements; i++)begin
array.push_back(i);
end
elements = 10;
/// push 10 items
for(int i=0; i<elements; i++)begin
array.push_back(i);
end
/// pop array.size() items
elements = array.size();
for(int i=0; i<elements; i++)begin
$display("array[%0d] = %0d", i, array.pop_front());
end
end
endmodule
queueを定義後、最初に5つデータをqueueに格納(push_back())し、続けて10個のデータをqueueに格納しています。次に、queueに入っているデータ個数分(array.size())、pop_front()メソッドで取り出して表示しています。
--- 実行例 (example)---
# array[0] = 0
# array[1] = 1
# array[2] = 2
# array[3] = 3
# array[4] = 4
# array[5] = 0
# array[6] = 1
# array[7] = 2
# array[8] = 3
# array[9] = 4
# array[10] = 5
# array[11] = 6
# array[12] = 7
# array[13] = 8
# array[14] = 9