Tömb (adatszerkezet)
adatszerkezet
A számítástudományban a tömb (angolul array) olyan adatszerkezet, amelyet nevesített elemek csoportja alkot, melyekre sorszámukkal (indexükkel) lehet hivatkozni. Vektornak is nevezik, ha egydimenziós, mátrixnak esetenként, ha többdimenziós. A legtöbb programozási nyelvben minden egyes elemnek azonos adattípusa van és a tömb folytonosan helyezkedik el a számítógép memóriájában. A készítés módja alapján lehet:
- statikus: a méret fix, deklarációban szabályozott, vagy
- dinamikus tömb: a mérete változik, folyamatosan bővíthető.
Tömb | |
Típus | Tömb |
Tömbrendszer kereszthivatkozási lista
szerkesztésProgramozási nyelv | Kezdőindex | Korlátellenőrzés | Dimenzió | Dinamikus |
---|---|---|---|---|
Ada | n | ellenőrzött | n | init1 |
APL7 | 0 or 1 | ellenőrzött | n | init1 |
Assembly | 0 | nem ellenőrzött | 1 | no |
BASIC | 1 | nem ellenőrzött | 1 | init1 |
C | 0 | nem ellenőrzött | n2 | heap3,4 |
C++5 | 0 | nem ellenőrzött | n2 | heap3 |
C# | 0 | ellenőrzött | n2 | heap3,9 |
Common Lisp | 0 | ellenőrzött | n | yes |
D | 0 | változó11 | n | yes |
FreeBasic | n | ellenőrzött | n | yes |
Fortran | n | változó12 | n | heap3 |
IDL | 0 | ellenőrzött | n | yes |
Java5 | 0 | ellenőrzött | 12 | heap3 |
Lua | 1 | ellenőrzött | 12 | yes |
MATLAB | 1 | ellenőrzött | n8 | yes |
Oberon-1 | 0 | ellenőrzött | n | no |
Oberon-2 | 0 | ellenőrzött | n | yes |
Pascal | n | ellenőrzött | n | változó10 |
PERL | n | ellenőrzött | 12 | yes |
PL/I | n | ellenőrzött | ||
Python | 0 | ellenőrzött | 12 | yes |
Ruby | 0 | ellenőrzött | 12 | yes |
Scheme | 0 | ellenőrzött | 12 | no |
Smalltalk5 | 1 | ellenőrzött | 12 | yes6 |
Visual BASIC | n | ellenőrzött | n | yes |
Windows PowerShell | 0 | ellenőrzött | n2 | heap |
- A méret inicializálható, utána már nem változtatható
- Megengedi, hogy tömböket tömbökből hozzunk létre, ezáltal emulálhatóak a többdimenziós tömbök
- A méret csak akkor adható meg, ha a kupacnak (heap) már le van foglalva hely a memóriában
- C99 megengedi a változó méretű tömbök használatát, azonban jelenleg nincs még olyan fordító, ami támogatná ezt a funkciót
- Ez a lista szigorúan csak a nyelvek saját képességeit hasonlítja össze. Minden nyelvben (még assemblyben is) lehetséges bonyolultabb tömbkezelést megvalósítani kiegészítő könyvtárakkal.
- Az Array osztály ugyan fix méretű, de az OrderedCollection dinamikus
- Az index első eleme lehet 0 vagy 1, de a teljes munkatérre érvényesül majd ez a szabály
- Minimum kétdimenziós
- Megengedi, hogy fix méretű tömböt készítsünk "unsafe" kódban, ezáltal javítva az átjárhatóságot más nyelvekkel.
- Implementációkként változik. Újabbak (FreePascal és Delphi) már engedi a kupac-bázisú dinamikus tömbök használatát
- A viselkedés szabályozható a fordítóprogram kapcsolóival.
- Majdnem mindegyik Fortran implementáció engedi a határvizsgálatot a fordítóprogram kapcsolóival. Azonban hatékonysági szempontból alapértelmezettként ezt a képességet kikapcsolják.