Czy w Fortranie znajduje się biblioteka, która pozwala używać rzadkich dynamicznych tablic (takich jak hash/słownik) poza Judy arrays?Dynamiczna struktura danych typu "Hash" w Fortranie
Odpowiedz
Nie widziałem jeden wbudowany, ale Google zwraca kilka:
FLibs: http://flibs.sourceforge.net/
Hash Tables: http://burtleburtle.net/bob/hash/evahash.html i http://www.cris.com/~Ttwang/tech/inthash.htm.
Wielkie dzięki, miałem FLib na radarze, ale jakoś słownik dostarczony przez to, zwrócił moją uwagę. W przeciwnym razie moje poszukiwania zakończyły się głównie sprawami C++, na których tak naprawdę nie chcę polegać ... – haraldkl
@Haraldkl: Mam nadzieję, że znormalizowany może nadejść w przyszłości. – SOUser
Znalazłem również czerwono-czarną implementację drzewa na stronie https://www.myroms.org/blog/ i niektóre implementacje trie na stronie https://github.com/ned14/nedtries, jednak wszystkie one wymagają więcej pracy do wykorzystania ich w Fortranie, szczególnie w moim scenariuszu. Tak więc myślę, że nie ma po prostu użytecznej ogólnej biblioteki. – haraldkl
Stworzyłem abstrakcyjny słownik w języku fortran, który może odpowiadać Twoim potrzebom.
Patrz: https://github.com/zerothi/fdict
zasadzie to pozwala zrobić
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)
którym można zapisać wszystkie wewnętrzne typów i może być łatwo rozszerzona zawierać inne dane typy, to domyślnie początkowo zawierać się jako inna wartość. (ostatnia linia zachowuje słownik jako wskaźnik)
Jest to oznaczenie .kv. == key : value
, które jest głęboką kopią, oraz .kvp. == key : pointer
, która jest kopią referencyjną. W ten sposób można przechowywać ogromne dane bez konieczności duplikowania danych i pobierania wskaźnika w pewnym późniejszym momencie.
Aby rozwinąć pomysł, wszystkie dane są zapisywane jako wskaźniki adresowe za pomocą wywołania transfer
z typu pochodnego zawierającego wskaźnik danych. W ten sposób oszukujesz kompilator, by podał ci adres typu pochodzącego z fortranu, ale zmusza go do odzyskania go w dokładnie taki sam sposób.
Przez .kv.
wskaźnik typu danych jest przydzielany, a następnie wskazywany przez kontener danych, a następnie przydzielony wskaźnik jest nullify
i stracił, zmuszając użytkownika do sprawdzenia, co robi (nie ma śmieci -kolektor w nim;)). Przez .kvp.
wskaźnik jest bezpośrednio zapisywany bez duplikowania pamięci.
Fajną rzeczą jest to, że jest zgodna z Fortran90.
To jest prawie odpowiedź tylko link. Czy możesz napisać coś o tym, czego biblioteka może i czego nie może dokonać? Po co to jest? Której wersji Fortran to wymaga? –
Zrobiłem coś podobnego do mojego własnego celu, używając nieograniczonego polimorfizmu. Czy używa to parametrycznego polimorfizmu? Czy to zależy od 'transfer()'? –
Co teraz? Myślę, że wyjaśnienie większej części API jest bez znaczenia? Nie? – zeroth
- 1. Haskell dane typu dynamiczna zmiana
- 2. Struktura danych drzewa PostgreSQL
- 3. Co to jest struktura danych wektorowych
- 4. [Sql-Server] jakiego typu danych użyć dla wartości salt hash i wartości hash i jakiej długości?
- 5. Funkcja prywatna w Fortranie
- 6. Nieskończoność w Fortranie
- 7. słownik struktura danych w R
- 8. Struktura danych tabeli w pamięci
- 9. Pythonowa struktura danych w porządku alfabetycznym
- 10. struktura nie nazwę typu w C++
- 11. Struktura danych drzewa ekspresji
- 12. Struktura danych liny
- 13. Dynamiczna etykieta punktu danych Pozycjonowanie w ggmap
- 14. Struktura danych na szybsze zawiera() działanie?
- 15. Dynamiczna zmiana adnotacji danych w projekcie danych dynamicznych
- 16. Hash danych Perla Data: Dumper
- 17. Warunki brzegowe 2D w Fortranie
- 18. Funkcja Zwracanie tablicy w Fortranie
- 19. Java w pamięci Tabela SQL jak struktura danych
- 20. Konwertuj typ logiczny na podwójny w Fortranie
- 21. Zapisywanie danych w URI Po Hash
- 22. Struktura bazy danych dla struktury danych drzewa
- 23. Performatic struktura bez powielania danych
- 24. Najbardziej odpowiednia struktura danych (Python)
- 25. C struktura jako typ danych
- 26. struktura danych trwałych a niezmiennych
- 27. Model szkieletowy: struktura danych zagnieżdżonych
- 28. JAVA - Najlepsza odpowiednia struktura danych
- 29. Struktura bazy danych ściany Facebooka
- 30. Jedna globalna struktura danych w Vue.js
+1 za pierwsze pytanie z fortuny, które widziałem! –
@Preet Sangha - http://stackoverflow.com/tags/fortran – Rook