D 프로그래밍-연관 배열
연관 배열에는 정수일 필요는 없으며 드물게 채워질 수있는 인덱스가 있습니다. 연관 배열의 색인을Key, 그 유형은 KeyType.
연관 배열은 배열 선언의 [] 내에 KeyType을 배치하여 선언됩니다. 연관 배열의 간단한 예가 아래에 나와 있습니다.
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); 
} 
    위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
3 
Tuts 
["test":"Tuts"] 
[] 
    연관 배열 초기화
연관 배열의 간단한 초기화는 다음과 같습니다.
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"]);    
} 
    위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
1 
    연관 배열의 속성
다음은 연관 배열의 속성입니다.
| Sr. 아니. | 속성 및 설명 | 
|---|---|
| 1 | .sizeof 연관 배열에 대한 참조 크기를 반환합니다. 32 비트 빌드에서는 4이고 64 비트 빌드에서는 8입니다.  |  
      
| 2 | .length 연관 배열의 값 수를 반환합니다. 동적 배열과 달리 읽기 전용입니다.  |  
      
| 삼 | .dup 동일한 크기의 새 연관 배열을 만들고 연관 배열의 내용을 여기에 복사합니다.  |  
      
| 4 | .keys 연관 배열의 키 요소 인 동적 배열을 리턴합니다.  |  
      
| 5 | .values 연관 배열의 값인 동적 배열을 반환합니다.  |  
      
| 6 | .rehash 조회가 더 효율적이되도록 연관 배열을 제자리에 재구성합니다. 예를 들어, 프로그램이 기호 테이블로드를 완료하고 이제 빠른 조회가 필요한 경우 rehash가 효과적입니다. 재구성 된 배열에 대한 참조를 반환합니다.  |  
      
| 7 | .byKey() 연관 배열의 키를 반복하는 ForeachStatement에 대한 Aggregate로 사용하기에 적합한 대리자를 반환합니다.  |  
      
| 8 | .byValue() 연관 배열의 값을 반복하는 ForeachStatement에 대한 Aggregate로 사용하기에 적합한 대리자를 반환합니다.  |  
      
| 9 | .get(Key key, lazy Value defVal) 키를 찾습니다. 존재하는 경우 해당 값을 반환하고 else는 defVal을 평가하고 반환합니다.  |  
      
| 10 | .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); 
} 
    위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.
sizeof: 8                                                                          
length: 2                                                                          
dup: ["test":3, "test2":20]                                                        
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]