在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ C++/ D語言關(guān)聯(lián)數(shù)組
類的訪問修飾符
D語言運算符
D語言邏輯運算符
類指針
D語言元組
D語言指針
D語言模塊
D語言sizeof運算符
D語言混合類型
D語言封裝
D語言條件編譯
類的靜態(tài)成員
D語言do...while循環(huán)
D語言結(jié)構(gòu)體
重載
D語言字符串-String
D語言決策語句
D語言接口
D語言for循環(huán)
D語言switch語句
D語言關(guān)聯(lián)數(shù)組
D語言范圍
D語言枚舉Enums
契約式編程
D語言并發(fā)
D語言開發(fā)環(huán)境設(shè)置
D語言別名
D語言常值
D語言常量
D語言函數(shù)
D語言if嵌套語句
D語言循環(huán)
D語言概述,D語言是什么?
D語言運算符優(yōu)先級
D語言continue語句
D語言異常處理
D語言break語句
D語言if...else語句
D語言類和對象
類繼承
D語言字符
D語言教程
D語言關(guān)系運算符
比較操作符重載
構(gòu)造函數(shù)和析構(gòu)函數(shù)
D語言抽象類
D語言if語句
D語言賦值運算符
D中算術(shù)運算符
D語言類成員函數(shù)
D語言位運算符
D語言變量
D語言數(shù)據(jù)類型
D語言文件I/O
D語言數(shù)組
一元運算符重載
D語言嵌套switch語句
D語言基本語法
二元運算符重載
this指針
D語言聯(lián)合體
D語言模板
D語言嵌套循環(huán)
D語言while循環(huán)

D語言關(guān)聯(lián)數(shù)組

關(guān)聯(lián)數(shù)組有一個索引,并不一定是一個整數(shù)。該指數(shù)的關(guān)聯(lián)數(shù)組被稱為鍵,它的類型就是所謂的關(guān)鍵字類型。

關(guān)聯(lián)數(shù)組是通過將關(guān)鍵字類型的[]數(shù)組聲明中聲明。一個簡單的例子為關(guān)聯(lián)數(shù)組,如下所示。

import std.stdio;

void main ()
{
   int[string] e;      // associative array b of ints that are

   e["test"] = 3;
   writeln(e["test"]);

   string[string] f;

   f["test"] = "Tuts";
   writeln(f["test"]);

   writeln(f);

   f.remove("test");
   writeln(f);
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會產(chǎn)生以下結(jié)果:

3
Tuts
["test":"Tuts"]
[]

初始化

關(guān)聯(lián)數(shù)組的一個簡單的初始化如下所示。

import std.stdio;

void main ()
{
   int[string] days =
    [ "Monday"   : 0, "Tuesday" : 1, "Wednesday" : 2,
      "Thursday" : 3, "Friday"  : 4, "Saturday"  : 5,
      "Sunday"   : 6 ];
   writeln(days["Tuesday"]);   
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會產(chǎn)生以下結(jié)果:

1

屬性

屬性 描述
.sizeof 返回引用關(guān)聯(lián)數(shù)組的大小;32位版本的4位,在64位版本為8位。
.length 返回關(guān)聯(lián)數(shù)組中的值的數(shù)目。不同于動態(tài)數(shù)組,它是只讀的。
.dup 創(chuàng)建相同大小的新關(guān)聯(lián)數(shù)組和關(guān)聯(lián)數(shù)組中的內(nèi)容復(fù)制到其中。
.keys 返回動態(tài)數(shù)組,它的元素是關(guān)聯(lián)數(shù)組中的鍵。
.values 返回動態(tài)數(shù)組,它的元素是關(guān)聯(lián)數(shù)組中的值。
.rehash 重組的關(guān)聯(lián)數(shù)組到位,使查找更高效。翻版時生效,例如,程序加載完成了一個符號表,現(xiàn)在需要快速查找它。返回一個引用到重組后的數(shù)組。
.byKey() 返回委托適合用作一個聚合到ForeachStatement這將遍歷關(guān)聯(lián)數(shù)組的鍵。
.byValue() 返回委托適合用作一個聚合到ForeachStatement這將遍歷關(guān)聯(lián)數(shù)組的值。
.get(Key key, lazy Value defVal) 查找鍵;如果存在相應(yīng)的值則返回,否則求值,并返回defVal。
.remove(Key key) 刪除一個對象的鍵。

利用上述特性,例如,如下所示。

import std.stdio;

void main ()
{
   int[string] array1;

   array1["test"] = 3;
   array1["test2"] = 20;
   writeln("sizeof: ",array1.sizeof);
   writeln("length: ",array1.length);
   writeln("dup: ",array1.dup);

   array1.rehash;
   writeln("rehashed: ",array1);

   writeln("keys: ",array1.keys);
   writeln("values: ",array1.values);

   foreach (key; array1.byKey) {
      writeln("by key: ",key);
   }

   foreach (value; array1.byValue) {
      writeln("by value ",value);
   }

   writeln("get value for key test: ",array1.get("test",10));
   writeln("get value for key test3: ",array1.get("test3",10));

   array1.remove("test");
   writeln(array1);
}

當(dāng)上面的代碼被編譯并執(zhí)行,它會產(chǎn)生以下結(jié)果:

sizeof: 8
length: 2
dup: ["test2":20, "test":3]
rehashed: ["test":3, "test2":20]
keys: ["test", "test2"]
values: [3, 20]
by key: test
by key: test2
by value 3
by value 20
get value for key test: 3
get value for key test3: 10
["test2":20]