Tömb (adatszerkezet)
Megjelenés
| Tömb | |
| Típus | Tömb |
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ömbrendszer kereszthivatkozási lista
[szerkesztés]| Programozá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.