डी प्रोग्रामिंग - एसोसिएटिव एरेस

साहचर्य सरणियों में एक सूचकांक होता है जो आवश्यक रूप से पूर्णांक नहीं होता है, और बहुत कम आबादी हो सकती है। एक साहचर्य सरणी के लिए सूचकांक को कहा जाता है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

सहयोगी ऐरे के गुण

यहाँ एक साहचर्य सरणी के गुण हैं -

अनु क्रमांक। संपत्ति विवरण
1

.sizeof

सहयोगी सरणी के संदर्भ का आकार लौटाता है; यह 32-बिट बिल्ड में 4 और 64-बिट बिल्ड पर 8 है।

2

.length

सहयोगी सरणी में मानों की संख्या लौटाता है। डायनेमिक सरणियों के विपरीत, यह केवल पढ़ने के लिए है।

3

.dup

एक ही आकार का एक नया साहचर्य सरणी बनाएँ और इसमें साहचर्य सरणी की सामग्री की प्रतिलिपि बनाएँ।

4

.keys

डायनामिक ऐरे लौटाता है, जिनमें से तत्व ऐररेटिव ऐरे में कुंजी हैं।

5

.values

डायनेमिक एरे लौटाता है, जिनमें से तत्व ऐररेटिव ऐरे में वैल्यू हैं।

6

.rehash

जगह में साहचर्य सरणी को पुनर्गठित करता है ताकि लुकअप अधिक कुशल हो। उदाहरण के लिए, जब प्रोग्राम प्रभावी होता है, तो प्रतीक तालिका को लोड करने के लिए प्रोग्राम किया जाता है और अब इसमें तेज लुकअप की आवश्यकता होती है। पुनर्गठित सरणी का संदर्भ देता है।

7

.byKey()

एक प्रतिनिधि के रूप में फॉरगेटस्टैटमेंट के लिए एक एग्रीगेट के रूप में उपयोग के लिए उपयुक्त लौटाता है जो साहचर्य सरणी की कुंजी पर पुनरावृति करेगा।

8

.byValue()

एक प्रतिनिधि के रूप में इस्तेमाल के लिए उपयुक्त फॉरग्रेस्टेटमेंट को लौटाता है जो साहचर्य सरणी के मूल्यों पर पुनरावृति करेगा।

9

.get(Key key, lazy Value 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]