Esiste una libreria utilizzabile in Fortran, che consente l'utilizzo di array dinamici sparsi (hash/dizionario come) oltre allo Judy arrays?Dynamic-Hash-like-data structure in Fortran
risposta
non ho visto uno built-in, ma Google restituisce alcuni:
FLIBS: http://flibs.sourceforge.net/
Hash Tables: http://burtleburtle.net/bob/hash/evahash.html e http://www.cris.com/~Ttwang/tech/inthash.htm.
Grazie mille, ho avuto il FLib sul radar, ma in qualche modo il dizionario fornito da esso, ha fatto scivolare la mia attenzione. In caso contrario, le mie ricerche si sono concluse con alcune cose in C++, su cui non voglio realmente dipendere ... – haraldkl
@Haraldkl: Spero che uno standard possa venire in futuro. – SOUser
Ho anche trovato un'implementazione albero rosso-nero su https://www.myroms.org/blog/ e qualche implementazione trie su https://github.com/ned14/nedtries, tuttavia hanno tutti bisogno di un po 'di lavoro da usare loro in Fortran e soprattutto nel mio scenario. Quindi penso che non ci sia una libreria generica semplicemente utilizzabile. – haraldkl
Ho creato un dizionario astratto in fortran che potrebbe soddisfare le tue esigenze.
See: https://github.com/zerothi/fdict
In sostanza si permette di fare
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)
Dove è possibile salvare tutti i tipi intrinseci e può essere facilmente esteso per contenere altri tipi di dati, il valore predefinito di contenere inizialmente se stesso come un altro valore (l'ultima riga mantiene un dizionario come puntatore)
Fa denominazione .kv. == key : value
che è una copia profonda e .kvp. == key : pointer
che è una copia di riferimento. In questo modo è possibile memorizzare enormi dati senza dover duplicare i dati e recuperare il puntatore in un momento successivo.
Per elaborare l'idea, tutti i dati vengono memorizzati come puntatori di indirizzo utilizzando una chiamata transfer
da un tipo derivato contenente il puntatore dati. In questo modo induci il compilatore a consegnarti l'indirizzo del tipo derivato fortran, ma ti costringe a recuperarlo nello stesso modo.
Entro il .kv.
un puntatore del tipo di dati viene allocato e successivamente indirizzato dal contenitore dati, quindi in seguito il puntatore assegnato è nullify
ied e perso costringendo quindi l'utente a sapere cosa stanno facendo (non c'è spazzatura -collettore in esso;)). Entro il .kvp.
il puntatore viene salvato direttamente senza duplicare alcuna memoria.
La cosa bella è che è compatibile con fortran90.
Questa è quasi una risposta solo al collegamento. Potresti scrivere qualcosa su ciò che la biblioteca può e non può fare? Cosa serve? Quale versione di Fortran richiede? –
Ho fatto qualcosa di simile per il mio scopo usando un polimorfismo illimitato. Questo usa il polimorfismo parametrico? Dipende da 'transfer()'? –
E adesso? Penso che spiegare una parte più ampia dell'API non abbia senso? No? – zeroth
- 1. CSS Structure Structure Chart
- 2. BeginThread Structure - Delphi
- 3. Cosa significa "%" in Fortran?
- 4. Infinity in Fortran
- 5. Conversione di JSON Structure in BasicDBObject
- 6. Maven Multi-Module Project Structure
- 7. C# P/Invoke structure problem
- 8. Django cross table model structure
- 9. Return Structure from Function (C)
- 10. FORTRAN READ()
- 11. Funzioni FORTRAN
- 12. Fortran DEALLOCATE
- 13. FORTRAN WRITE()
- 14. Fortran - interfaccia esplicita
- 15. Errore: dichiarazione inclassificabile in FORTRAN
- 16. Copia deep array in Fortran
- 17. Confusione sui tipi in FORTRAN
- 18. software di conversione per fortran 77 a fortran 90
- 19. .net table structure della struttura clr
- 20. heroku rake db: structure: load failure
- 21. atom.io auto create html basic structure
- 22. Sintassi union-within-structure nei tipi
- 23. fortran SAVE statement
- 24. R & Fortran chiama
- 25. Fortran allocate/deallocate
- 26. "Project Structure" in Android Studio non viene avviato
- 27. Opzione "Shallow Folder Structure" di InstallShield in Visual Studio 2012
- 28. Come dichiarare correttamente un ctype Structure + Union in Python?
- 29. Come implementare una Set Data Structure in Java?
- 30. Fortran 90 Risorse?
+1 per la prima domanda di Fortran che ho visto! –
@Preet Sangha - http://stackoverflow.com/tags/fortran – Rook