Pojmenovaná sada prvků stejného typu se nazývá pole. Taková organizace dat má spoustu zjevných výhod a jednu nevýhodu - při vytváření pole je nutné předem deklarovat jeho velikost, kterou nelze v budoucnu konvenčními prostředky změnit. Řešením tohoto problému je vývoj dynamických polí, která mohou kdykoli změnit počet jejich prvků. Kromě toho můžete použít obě již vytvořené třídy a implementovat vlastní pomocí standardních nástrojů programovacího jazyka.
Instrukce
Krok 1
Hlavní podstatou dynamického pole je alokovat paměť pro data v něm uložená přesně ve velikosti, v jaké je v danou chvíli potřeba. Je nejvhodnější implementovat tuto konstrukci ve formě třídy - obálky pro pole. Zde je nutné zajistit všechny funkce, které provádějí přidělování a uvolňování paměti pro pole, stejně jako operátory, které poskytují přístup k jeho prvkům.
Krok 2
Vytvořte objekt třídy obálky dynamického pole a konstruktor automaticky přidělí paměť zadané velikosti. Pokud bude při vyplnění pole paměť prvků úplně obsazena, budou při přidávání dalších dat provedeny následující akce: - všechny informace z pole jsou uloženy v dočasném úložišti (pomocné pole); - dříve přidělená paměť je uvolněno speciálním příkazem (free, delete); - paměť je přidělena pod maticí velikosti, která musí obsahovat všechna data - všechny „staré“hodnoty jsou umístěny do nového pole z dočasného úložiště a nového prvek je přidán.
Krok 3
Nejlepší způsob práce s dynamickými poli je použití existujících tříd knihoven. Jedním z nejběžnějších příkladů je třída vektorů. Zahrnuje všechny funkce a iterátory nezbytné pro fungování proměnlivého pole. Kromě toho je modul knihovny obsahující tuto třídu dodáván s jakoukoli verzí kompilátoru C ++.
Krok 4
Zahrňte knihovnu dynamického pole pomocí příkazu #include. K vytvoření objektu použijte třídu vektorů. Pohyb v poli je stejný jako v obvyklém případě pomocí indexů. Mezi speciální funkce zde patří funkce pro přidávání a odebírání nových prvků a také řada pomocných metod. Příklad kódu pro vytváření a provozování vektoru dynamického pole: #include vector; vector int Mass; // deklarace dynamického pole s prvky typu intMas.push_back (10); // přidání prvního prvku - číslo 10 Mas.push_back (15); // přidání druhého prvku - číslo 15Mas [1] = 30; // na druhý prvek je napsáno číslo 30Mas.pop_back (); // smazání posledního prvku pole Zde při vytváření dynamického pole s názvem Mass musí být zadán typ jeho prvků (int), v tomto případě není zadána dimenze.