Hogyan valósítható meg egy igazi Vector típus a Haskellben? Annak érdekében, hogy valami vektor legyen, azt szekvenciálisan kell tárolni a memóriában O(1)
véletlen hozzáféréssel. De a Haskell elrejti a memóriakezelését, és az adattípusai a fákat írják le! Tehát hogyan lehetne kifejezni az ilyen követelményeket?
Megjegyzések
Válasz
A Haskellben nem minden adattípus fa. Vannak olyan beépített típusok is, mint a függvények vagy az Int. Ezek közül megtalálhatja a Array típust, amely O (1) hozzáférést biztosít az elemekhez.
Néhány fordító, például a GHC, szintén doboz nélküli tömbök. Azok kevesebb memóriát használnak, és az elemenkénti hozzáférés gyorsabb, de ez természetesen nem változtatja meg a bonyolultságot.
Ezen tömbök tetejére fel lehet építeni a std::vector
C ++ -ban. Ilyen például az vektor könyvtár.
Válasz
Meg kell néznie a Data.Vector.Unboxed
és Data.Vector.Mutable
elemeket a vektorcsomagban:
std::vector
).