Co je vektor C ++?
C ++ VECTOR je dynamická pole schopné automaticky upravena sám. Ke změně velikosti dojde poté, co byl prvek přidán nebo odstraněn z vektoru. Úložiště je zpracováno automaticky kontejnerem. Prvky vektoru jsou uloženy v souvislém úložišti. To umožňuje programátorům v C ++ přístup a procházení vektorových prvků pomocí iterátorů.
Vkládání nových dat do vektoru se provádí na jeho konci. To trvá rozdílný čas. Odstranění prvku z vektoru trvá konstantní čas. Důvodem je, že není nutné měnit velikost vektoru. Vložení nebo odstranění prvku na začátku vektoru trvá lineárně.
V tomto výukovém programu C ++ se naučíte:
- Co je vektor C ++?
- Kdy použít vektor?
- Jak inicializovat vektory v C ++
- Iterátory
- Modifikátory
- Příklad 1
- Příklad 2
- Kapacita
- Příklad 3
Kdy použít vektor?
Vektor C ++ by měl být použit za následujících okolností:
- Při práci s datovými prvky, které se důsledně mění.
- Pokud velikost dat není známa před začátkem, vektor nebude vyžadovat, abyste nastavili maximální velikost kontejneru.
Jak inicializovat vektory v C ++
Syntaxe vektorů v C ++ je:
vectorname (items)
- Jak je uvedeno výše, začínáme klíčovým slovem vektor.
- Datový typ je datový typ prvků, které se mají uložit ve vektoru.
- Název je název vektoru nebo datových prvků.
- Položky označují počet prvků pro vektorová data. Tento parametr je volitelný.
Iterátory
Účelem iterátorů je pomoci nám získat přístup k prvkům, které jsou uloženy ve vektoru. Je to objekt, který funguje jako ukazatel. Zde jsou běžné iterátory podporované vektory C ++:
- vector :: begin (): dává iterátor, který ukazuje na první prvek vektoru.
- vector :: end (): dává iterátor, který ukazuje na prvek last-the-end vektoru.
- vector :: cbegin (): je to stejné jako vector :: begin (), ale nemá schopnost upravovat prvky.
- vector :: cend (): je to stejné jako vector :: end (), ale nelze upravovat vektorové prvky.
Modifikátory
Modifikátory se používají ke změně významu zadaného datového typu. Tady jsou běžné modifikátory v C ++:
- vector :: push_back (): Tento modifikátor tlačí prvky zezadu.
- vector :: insert (): Pro vkládání nových položek do vektoru na určeném místě.
- vector :: pop_back (): Tento modifikátor odstraní vektorové prvky ze zadní strany.
- vector :: erase (): Používá se k odebrání řady prvků ze zadaného umístění.
- vector :: clear (): Odstraní všechny vektorové prvky.
Příklad 1
#include#include using namespace std;int main(){vector nums;for (int a = 1; a <= 5; a++)nums.push_back(a);cout << "Output from begin and end: ";for (auto a = nums.begin(); a != nums.end(); ++a)cout << *a << " ";cout << "\nOutput from cbegin and cend: ";for (auto a = nums.cbegin(); a != nums.cend(); ++a)cout << *a << " ";return 0;}
Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Zahrňte soubor záhlaví iostream do našeho kódu. Umožní nám to číst a zapisovat do konzoly.
- Zahrňte do našeho kódu vektorový hlavičkový soubor. Umožní nám to pracovat s vektory v C ++.
- Zahrňte standardní obor názvů, abyste mohli používat jeho třídy a funkce, aniž byste jej museli volat.
- Zavolejte funkci main (), do které by měla být přidána logika programu.
- {Označuje začátek těla funkce main ().
- Deklarujte vektor s názvem nums pro uložení sady celých čísel.
- Vytvořte smyčku for, která nám pomůže iterovat přes vektor. Proměnná nám pomůže iterovat přes vektorových prvků, od 1 st až 5 th prvky.
- Zatlačte prvky do vektorového čísla zezadu. Pro každou iteraci to přidá aktuální hodnotu proměnné a do vektoru, což je 1 až 5.
- Vytiskněte nějaký text na konzoli
- Proměnnou iterátoru a použijte k iteraci nad prvky vektorových čísel od začátku do konce. Všimněte si, že používáme iterátory vector :: begin () a vector :: end ().
- Vytiskněte hodnoty, na které ukazuje iterátorová proměnná an na konzole pro každou iteraci.
- Vytiskněte nějaký text na konzoli. \ N je nový znak řádku, pohybující se kurzorem na nový řádek, ze kterého se bude tisknout.
- Proměnnou iterátoru použijte k iteraci nad prvky vektorových čísel od začátku do posledního prvku. Všimněte si, že používáme iterátory vector :: cbegin () a vector :: cend ().
- Na konzole pro každou iteraci vytiskněte hodnoty, na které ukazuje proměnná iterátoru a.
- Hlavní funkce by měla vrátit hodnotu, pokud je program úspěšně spuštěn.
- Konec těla funkce main ().
Příklad 2
#include#include using namespace std;int main(){vector nums;nums.assign(5, 1);cout << "Vector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.push_back(2);int n = nums.size();cout << "\nLast element: " << nums[n - 1];nums.pop_back();cout << "\nVector contents: ";for (int a = 0; a < nums.size(); a++)cout << nums[a] << " ";nums.insert(nums.begin(), 7);cout << "\nFirst element: " << nums[0];nums.clear();cout << "\nSize after clear(): " << nums.size();}
Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Chcete-li používat jeho funkce, zahrňte do našeho kódu soubor záhlaví iostream.
- Chcete-li používat jeho funkce, zahrňte do našeho kódu vektorový hlavičkový soubor.
- Chcete-li používat své třídy, aniž byste jej volali, zahrňte standardní obor názvů.
- Zavolejte funkci main (). Logika programu by měla být přidána do jeho těla.
- Začátek těla funkce main ().
- Deklarujte vektor s názvem nums k uložení některých celočíselných hodnot.
- Uložte 5 prvků do vektorových čísel. Každý s hodnotou 1.
- Vytiskněte nějaký text na konzoli
- Proměnnou iterátoru a použijte k iteraci nad prvky vektorových čísel.
- Vytiskněte hodnoty vektorových čísel na konzole pro každou iteraci.
- Přidejte hodnotu 2 na konec vektorových čísel.
- Deklarujte celočíselnou proměnnou n pro uložení velikosti vektorových čísel.
- Tiskněte spolu s dalším textem poslední hodnotu vektorových čísel. Mělo by vrátit 2.
- Odeberte poslední prvek z vektorových čísel. 2 budou odstraněny.
- Tisk textu na konzoli. \ N přesune kurzor na nový řádek, aby tam vytiskl text.
- Proměnnou iterátoru a použijte k iteraci nad prvky vektorových čísel.
- Vytiskněte hodnoty vektorových čísel na konzole pro každou iteraci.
- Vložte hodnotu 7 na začátek vektorových čísel.
- Vytiskněte první hodnotu vektorových čísel spolu s dalším textem. Mělo by se vrátit 7.
- Odstraňte všechny prvky z vektorových čísel.
- Po vymazání veškerého obsahu vytiskněte velikost vektoru spolu s dalším textem. Mělo by vrátit 0.
- Konec těla funkce main ().
Kapacita
K určení kapacity vektoru použijte následující funkce:
- Velikost () - Vrátí počet položek ve vektoru.
- Max_size () - Vrací nejvyšší počet položek, které může vektor uložit.
- Capacity () - Vrací množství úložného prostoru přiděleného vektoru.
- Resize () - Změní velikost kontejneru tak, aby obsahoval n položek. Pokud je aktuální velikost vektoru větší než n, zadní položky budou z vektoru odstraněny. Pokud je aktuální velikost vektoru menší než n, na zadní stranu vektoru budou přidány další položky.
- Empty () -i t vrací true, pokud je vektor prázdný, jinak vrací false.
Příklad 3
#include#include using namespace std;int main() {vector vector1;for (int x = 1; x <= 10; x++)vector1.push_back(x);cout << "Vector size: " << vector1.size()<< endl;cout << "Vector capacity: " << vector1.capacity() << endl;cout << "Maximum size of vector: " << vector1.max_size()<< endl;vector1.resize(5);cout << "Vector size after resizing: " << vector1.size() << endl;if (vector1.empty() == false)cout << "Vector is not empty"< Výstup:
Zde je snímek obrazovky s kódem:
Vysvětlení kódu:
- Chcete-li použít jeho funkci, zahrňte do našeho kódu soubor záhlaví iostream.
- Chcete-li používat jeho funkce, zahrňte do našeho kódu vektorový hlavičkový soubor.
- Zahrňte do našeho kódu std namespace, abyste mohli používat jeho třídy, aniž byste jej volali.
- Zavolejte funkci main (). Logika programu by měla být přidána do těla této funkce.
- Vytvořte vektor s názvem vector1 pro uložení celých čísel.
- Pomocí smyčky for vytvořte proměnnou x s hodnotami od 1 do 10.
- Zatlačte hodnoty proměnné x do vektoru.
- Vytiskněte velikost vektoru spolu s dalším textem na konzole.
- Vytiskněte kapacitu vektoru spolu s dalším textem na konzole.
- Vytiskněte maximální počet položek, které může vektor obsahovat, spolu s dalším textem na konzole.
- Změňte velikost vektoru tak, aby obsahoval pouze 5 prvků.
- Vytiskněte novou velikost vektoru spolu s dalším textem.
- Zkontrolujte, zda vektor není prázdný.
- Pokud není vektor prázdný, vytiskněte text na konzolu.
- Pomocí příkazu else uveďte, co dělat, pokud je vektor prázdný.
- Text, který se vytiskne na konzoli, pokud je vektor prázdný.
- Po úspěšném dokončení musí program vrátit hodnotu.
- Konec hlavního () funkčního těla.
Souhrn:
- Vektor v C ++ je dynamické pole, které je schopné samočinné změny velikosti, když je z něj prvek přidán nebo odstraněn.
- Úložiště pro vektor je zpracováno automaticky kontejnerem.
- Prvky vektoru jsou uloženy v souvislém úložišti, aby k nim bylo možné přistupovat a pak je procházet pomocí iterátorů.
- Vkládání nových dat do vektoru se provádí na jeho konci.
- Vkládání dat do vektoru trvá rozdílný čas.
- Odstranění prvku z vektoru trvá konstantní čas.
- Vložení nebo odstranění prvku na začátku trvá lineárně.
- Při práci s datovými prvky, které se důsledně mění, by se měly používat vektory.
- Můžete také použít vektory, pokud před datem není známa velikost dat.