作用:建立乙個更加靈活的陣列。類似於字典。也就是說,關聯陣列可以儲存任何型別的資料,也可以使用任何資料型別作為索引。(類似字典的鍵值對),因為任何資料型別都可以作為其索引值,所以其索引值可以是不連續的。
例子:
bit [63:0] assoc [int], idx = 1;
理解:也就是理解關聯資料的鍵值對,儲存值是bit型
,位寬為63bit
大小,索引值是int
型,儲存方式:
問題(1):索引值是int
型,可以不連續,那麼該如何對關聯資料進行遍歷?可通過foreach
進行遍歷
foreach ( assoc[i] )
$display( 「assoc[%h] = %h」 , i , assoc[i] );
問題(1):其索引是否有序?顯然字典是無序的。關聯資料中存放第乙個資料的地方,跟索引值的大小沒關係。
1num()
方法
定義:num()
方法返回聯合陣列中條目的數目。如果陣列是空陣列,那麼它返回 0。
int imem[*]; //其索引值為任意型別
imem[2'b3] = 1;
imem[16'hffff] = 2;
imem[4'b1000] = 3;
$display("%0d entries\n", imem.num); // 列印"3 entries"
2delete()
方法
定義:指定索引值,並刪除。
int map[string];
map["hello"] = 1;
map["sad"] = 2;
map["world"] = 3;
map.delete("sad"); // 從"map"中刪除索引為"sad"的條目
map.delete; // 刪除聯合陣列"map"中的所有條目
3exists()
方法
定義:判斷關聯資料中是否有指定索引的元素,如果元素存在則返回 1,否則返回 0。
if (map.exists("hello"))
map["hello"] += 1;
else
map["hello"] = 0;
4first()
方法
定義:返回第乙個陣列元素的索引值,如果陣列是空的則返回 0,否則返回 1。
string s;
if (map.first(s))
$display("first entry is : map[%s] = %0d\n", s, map[s]);
5last()
方法
定義:返回最後乙個陣列元素的索引值,如果陣列是空的則返回 0,否則返回 1。
string s;
if (map.last(s))
$display("last entry is : map[%s] = %0d\n", s, map[s]);
6next()
方法
定義:返回下乙個陣列元素的索引值,如果陣列是空的則返回 0,否則返回 1。這個不好理解,注意有第乙個,才會有下乙個。,如果第乙個不為 0,那麼可判斷下乙個是不是 0
string s;
if (map.first(s)) begin
do$display("%s : %d\n", s, map[s]);
while (map.next(s));
end
關聯陣列也可以用實驗:將字串檔案當作索引,儲存到關聯陣列中。字串
索引進行定址,使用字串索引讀取檔案,並建立關聯陣列,可以實現字串到數字的對映。
sv
在讀文字時,是一行一行讀取,那麼每讀一行,讀到的值就可以方法廣聯資料中,其索引為index
即可。(比較好儲存讀到的字串資料)
檔案:結果:
table型別(關聯陣列)
定義乙個關聯陣列 type mytable is table of number index by varchar2 200 類似鍵值對 標準的定義語句 type type name is table of element type not null index by binary integer ...
1215 關聯陣列
一 陣列變數的限制 在前面講的陣列變數中,可以通過下標訪問其中的元素。例如,下列語句訪問陣列 array 的第三個元素 scalar array 2 雖然陣列很有用,但它們有乙個顯著缺陷,即很難記住哪個元素存貯的什麼內容。假如我們來寫乙個程式計算某檔案中首字母大寫的單詞出現的次數,用陣列來實現就比較...
9 3 關聯陣列
關聯陣列是bash 4.0新增的乙個特性。關聯陣列將值與索引連線 關聯 到一起,所以我們可以將元資料與實際資料關聯起來。使用這種方式可以將 家與他的樂器聯絡起來。關聯陣列必須以大寫的declare a命令來進行宣告。cat musicians.sh bin bash declare a beatle...