2011-08-23 13 views
12

में गतिशील हैश-जैसी डेटा-संरचना क्या फोर्ट्रान में एक लाइब्रेरी उपयोग योग्य है, जो Judy arrays के अलावा स्पैस गतिशील सरणी (हैश/शब्दकोश जैसे) का उपयोग करने की अनुमति देता है?फोरट्रान

FLibs: http://flibs.sourceforge.net/

हैश टेबल्स: http://burtleburtle.net/bob/hash/evahash.html और http://www.cris.com/~Ttwang/tech/inthash.htm

+0

+1 मैंने पहले किसान प्रश्न के लिए +1 देखा है! –

+9

@ प्रीता संघ - http://stackoverflow.com/tags/fortran – Rook

उत्तर

5

एक में निर्मित है, लेकिन गूगल में कुछ रिटर्न नहीं देखे हैं।

+0

बहुत बहुत धन्यवाद, मेरे पास रडार पर फ्लिब था, लेकिन किसी भी तरह से इसके द्वारा प्रदान किया गया शब्दकोश, मेरा ध्यान फिसल गया। अन्यथा मेरी खोज ज्यादातर सी ++ सामानों के साथ खत्म हो गईं, जिन्हें मैं वास्तव में निर्भर नहीं करना चाहता ... – haraldkl

+0

@ हार्ल्डक्ल: आशा है कि एक मानकीकृत भविष्य में आ सकता है। – SOUser

+0

मुझे https://www.myroms.org/blog/ पर एक लाल-काले पेड़ कार्यान्वयन और https://github.com/ned14/nedtries पर कुछ trie कार्यान्वयन भी मिला, हालांकि उन्हें सभी को उपयोग करने के लिए कुछ और काम की ज़रूरत है उन्हें फोरट्रान में विशेष रूप से मेरे परिदृश्य में। इस प्रकार मुझे लगता है कि कोई आसान उपयोग करने योग्य जेनेरिक लाइब्रेरी नहीं है। – haraldkl

4

मैंने फोर्टन में एक सारणित शब्दकोश बनाया है जो आपकी आवश्यकताओं के अनुरूप हो सकता है।

देखें: https://github.com/zerothi/fdict

मूल रूप से यह यह चूक शुरू में के रूप में शामिल करने के लिए, आप

type(dict) :: dic, dic2 
dic = ('KEY'.kv.1) 
dic = dic //('next'.kv. (/3.,5.,6./)) 
dic = dic //('string'.kv.'Hello world') 
dic2 = ('string2'.kv.'Test') 
dic = dic // ('dic2'.kvp.dic2) 

आप सभी आंतरिक प्रकार कहाँ बचा सकता है क्या करना है और यह आसानी से अन्य डेटा-प्रकार को रोकने के लिए बढ़ाया जा सकता है की सुविधा देता है एक और मूल्य (अंतिम पंक्ति एक सूचक के रूप में एक शब्दकोश को बरकरार रखे हुए)

यह .kv. == key : value पदनाम जो एक गहरी प्रतिलिपि है, और .kvp. == key : pointer जो एक संदर्भ प्रति है नहीं करता है। इस तरह आप डेटा को डुप्लिकेट किए बिना विशाल डेटा स्टोर कर सकते हैं और कुछ बिंदु पर पॉइंटर पुनर्प्राप्त कर सकते हैं।

इस विचार को विस्तारित करने के लिए, सभी डेटा को डेटा पॉइंटर युक्त व्युत्पन्न प्रकार से transfer कॉल का उपयोग करके पता पॉइंटर्स के रूप में संग्रहीत किया जाता है। इस तरह आप संकलक को व्युत्पन्न प्रकार के पते को सौंपने के लिए चालित करते हैं, लेकिन आपको इसे उसी तरीके से पुनर्प्राप्त करने के लिए मजबूर करता है।
.kv. डेटा प्रकार के एक सूचक द्वारा आवंटित किया जाता है और बाद में डेटा-कंटेनर द्वारा की ओर इशारा किया, तो बाद में आवंटित सूचक nullify आईईडी और खो इस प्रकार पता करने के लिए वे क्या कर रहे उपयोगकर्ता के लिए मजबूर (कोई कचरा है इसमें रंगीन;))। .kvp. द्वारा पॉइंटर सीधे किसी भी स्मृति को डुप्लिकेट किए बिना सहेजा जाता है।

अच्छी बात यह है कि यह fortran90 अनुरूप है।

+0

यह लगभग एक लिंक केवल उत्तर है। क्या आप लाइब्रेरी क्या कर सकते हैं और नहीं कर सकते हैं इसके बारे में कुछ लिख सकते हैं? ये किसके लिये है? किस फोरट्रान संस्करण की आवश्यकता है? –

+0

मैंने असीमित बहुरूपता का उपयोग करके अपने स्वयं के उद्देश्य के लिए कुछ ऐसा किया। क्या यह पैरामीट्रिक बहुरूपता का उपयोग करता है? क्या यह 'हस्तांतरण() 'पर निर्भर करता है? –

+0

अब के बारे में क्या? मुझे लगता है कि एपीआई का एक बड़ा हिस्सा समझना व्यर्थ है? नहीं? – zeroth

संबंधित मुद्दे