Lekce 12 - Implementace vektoru v jazyce C
V minulé lekci, Použití kolekcí z knihovny GLib v C, jsme si ukázali použití volně dostupné knihovny GLib a univerzálních kolekcí, které poskytuje.
Dnes si představíme kolekci vektor, která funguje jako pole, ale není velikostně omezena.
Dnešní lekce o kolekci vektor pochází z kurzu Dynamická práce s pamětí v jazyce C. Pokud jste ji již absolvovali, můžete ji přeskočit. Protože si zakládáme na poskytování kvalitních a kompletních kurzů, vnímáme jako důležité, aby byla tato problematika součástí i kurzu kolekcí.
Motivace
Oproti spojovému seznamu má pole výhodu v rychlosti náhodného
přístupu. Víme, že prvky pole se v paměti nacházejí bezprostředně za
sebou. Není tedy problém okamžitě přeskočit např. na pátý prvek. Pole
funguje jako ukazatel na pozici 0
, v tomto případě tedy stačí
vzít velikost jednoho prvku a skočit v paměti o čtyřnásobek této
velikosti doprava.
Hlavní nevýhodou pole ovšem je, že jeho velikost je omezena. Jakmile pole
vytváříme, musíme uvést, jak velký prostor (jak velkou řádku jedniček a
nul) pro něj má operační systém v paměti vyhradit. Budeme-li programovat
např. telefonní seznam, dá se velmi špatně odhadnout, kolik čísel v něm
bude náš uživatel mít. Bude to 10
nebo 1000
? Mohli
bychom vytvořit pole telefonních čísel o velikosti 1000
.
Uživatel by poté využíval jen jeho část a bylo by to lepší řešení,
než když velikost pole podceníme a uživateli aplikace sdělí, že nemá kam
ukládat (v tom lepším případě) nebo paměť rovnou přeteče. Jak to ale
udělat správně?
...konec náhledu článku...
Pokračuj dál
Došel jsi až sem a to je super! Věříme, že ti první lekce ukázaly něco nového a užitečného.
Chceš v kurzu pokračovat? Přejdi do prémiové sekce.
Koupit tento kurz
Obsah článku spadá pod licenci Premium, koupí článku souhlasíš se smluvními podmínkami.
- Neomezený a trvalý přístup k jednotlivým lekcím.
- Kvalitní znalosti v oblasti IT.
- Dovednosti, které ti pomohou získat vysněnou a dobře placenou práci.
Popis článku
Požadovaný článek má následující obsah:
V C tutoriálu implementujeme dynamickou kolekci vektor, která funguje jako pole, ale není velikostně omezena.
Kredity získáš, když podpoříš naši síť. To můžeš udělat buď zasláním symbolické částky na podporu provozu nebo přidáním obsahu na síť.