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]