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]