Vektor v C++ Standardní knihovna šablon (STL) s příkladem
⚡ Chytré shrnutí
Vektor v C++ je dynamické pole ze standardní knihovny šablon, které se automaticky mění velikost při přidávání nebo odebírání prvků a ukládá položky do souvislé paměti, aby k nim programátoři mohli přistupovat a procházet je pomocí iterátorů.

Co je to C++ Vektor?
A C++ Vector je dynamické pole schopné automaticky měnit velikost. Ke změně velikosti dojde poté, co byl prvek přidán nebo odstraněn z vektoru. Skladování je řešeno automaticky kontejnerem. Prvky vektoru jsou uloženy v souvislém úložišti. To umožňuje C++ programátoři pro přístup a procházení vektorových prvků pomocí iterátorů.
Vložení nových dat do vektoru se provádí na jeho konci. To trvá diferenciální čas. Odebrání prvku z vektoru trvá konstantní čas. Důvodem je, že není třeba měnit velikost vektoru. Vložení nebo odstranění prvku na začátku vektoru trvá lineární čas.
Než začnete psát kód s vektory, je užitečné vědět, kdy jsou tím správným kontejnerem, po kterém sáhnout.
Kdy použít vektor?
A C++ vektor by měl být použit za následujících okolností:
- Při práci s datovými prvky, které se neustále mění.
- Pokud velikost dat není před začátkem známa, vektor nebude vyžadovat nastavení maximální velikosti kontejneru.
Jak inicializovat vektory v C++
Syntaxe vektorů v C++ je:
vector <data-type> name (items)
Jak je uvedeno výše, začneme klíčovým slovem vector.
- Jedno datový typ je datový typ prvků, které mají být uloženy ve vektoru.
- Jedno název je název vektoru nebo datových prvků.
- Jedno položek označuje počet prvků pro vektorová data. Tento parametr je volitelný.
Jakmile vektor existuje, iterátory vám poskytují způsob pohybu mezi jeho prvky podobný ukazateli.
Iterátory
Účelem iterátorů je pomoci nám přistupovat k prvkům uloženým ve vektoru. Je to objekt, který funguje jako ukazatel. Zde jsou běžné iterátory podporované vektorem C++ vektory:
- vektor::začátek(): dává iterátor, který ukazuje na první prvek vektoru.
- vektor::konec(): poskytuje iterátor, který ukazuje na prvek vektoru za koncem.
- vector::cbegin(): Je to stejné jako vector::begin(), ale nemá schopnost upravovat prvky.
- vektor::cend(): Je to stejné jako vector::end(), ale nemůže upravovat prvky vektoru.
Následující příklad naplní vektor a poté jím projde pomocí proměnných i konstantních iterátorů.
Příklad 1
#include <iostream> #include <vector> using namespace std; int main() { vector<int> 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 kódu:
Code Vysvětlení:
- Zahrňte do našeho kódu hlavičkový soubor iostream. Umožní nám to číst a zapisovat do konzole.
- Zahrňte soubor vektorového záhlaví do našeho kódu. Umožní nám to pracovat s vektory C++.
- Zahrňte jmenný prostor std, abyste mohli používat jeho třídy a funkce bez jeho volání.
- Zavolejte funkci main(), do které má 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 nad vektorem. Proměnná nám pomůže iterovat nad prvky vektoru, od 1. do 5. prvku.
- Zatlačte prvky do vektoru číslo 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.
- Použijte proměnnou iterátoru a k iteraci prvků vektoru nums od začátku po prvek za koncem. Všimněte si, že používáme iterátory vector::begin() a vector::end().
- Pro každou iteraci vytiskněte na konzole hodnoty, na které ukazuje proměnná iterátoru a.
- Vytiskněte nějaký text na konzoli. \n je znak nového řádku, přesouvá kurzor na nový řádek a tiskne se odtud.
- Pro iterování prvků vektoru nums od začátku do konce použijte proměnnou iterátor. Všimněte si, že používáme iterátory vector::cbegin() a vector::cend().
- Pro každou iteraci vytiskněte na konzole hodnoty, na které ukazuje proměnná iterátoru a.
- Funkce main by měla vrátit hodnotu, pokud program běží úspěšně.
- Konec těla funkce main().
Modifikátory
Modifikátory se používají pro změnu významu zadaného datového typu. Zde 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 odstranění řady prvků ze zadaného umístění.
- vector::clear(): Odstraní všechny vektorové prvky.
Následující příklad aplikuje tyto modifikátory postupně, aby se vidělo, jak se vektor mění.
Příklad 2
#include <iostream> #include <vector> using namespace std; int main() { vector<int> 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 kódu:
Code Vysvětlení:
- Chcete-li používat jeho funkce, zahrňte do našeho kódu hlavičkový soubor iostream.
- Chcete-li používat jeho funkce, zahrňte do našeho kódu soubor vektorových hlaviček.
- Zahrňte jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
- 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, abyste uložili nějaké celočíselné hodnoty.
- Uložte 5 prvků do vektorových čísel. Každý s hodnotou 1.
- Vytiskněte nějaký text na konzoli.
- Použijte proměnnou iterátoru a k iteraci prvků vektoru nums.
- Vytiskněte hodnoty čísel vektorů na konzole pro každou iteraci.
- Přidejte hodnotu 2 na konec vektoru nums.
- Deklarujte celočíselnou proměnnou n pro uložení velikosti vektorových čísel.
- Vytiskněte poslední hodnotu vektorových čísel vedle jiného textu. Mělo by vrátit 2.
- Odeberte poslední prvek z čísel vektorů. 2 bude odstraněna.
- Tisk textu na konzole. \n přesune kurzor na nový řádek, aby se tam vytiskl text.
- Použijte proměnnou iterátoru a k iteraci prvků vektoru nums.
- Vytiskněte hodnoty čísel vektorů na konzole pro každou iteraci.
- Vložte hodnotu 7 na začátek vektoru nums.
- Vytiskněte první hodnotu vektorových čísel vedle dalšího textu. Mělo by se vrátit 7.
- Odstraňte všechny prvky z čísel vektorů.
- Po vymazání veškerého obsahu vytiskněte velikost čísla vektoru vedle ostatního textu. Mělo by vrátit 0.
- Konec těla funkce main().
Kapacita
Použijte následující funkce k určení kapacity vektoru:
- Velikost() – Vrací počet prvků ve vektoru.
- Max_size() – Vrací nejvyšší počet položek, které může vektor uložit.
- Kapacita() – Vrací množství úložného prostoru přiděleného vektoru.
- Změnit velikost() – Změní velikost kontejneru tak, aby obsahoval n položek. Pokud je aktuální velikost vektoru větší než n, budou zadní položky z vektoru odstraněny. Pokud je aktuální velikost vektoru menší než n, budou na konec vektoru přidány další položky.
- Prázdný() – vrátí hodnotu true, pokud je vektor prázdný. Jinak vrátí hodnotu false.
Tento poslední příklad hlásí a upravuje úložiště vektoru pomocí výše uvedených funkcí kapacity.
Příklad 3
#include <iostream> #include <vector> using namespace std; int main() { vector<int> 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"<<endl; else cout << "Vector is empty"<<endl; return 0; }
Výstup:
Zde je snímek obrazovky kódu:
Code Vysvětlení:
- Chcete-li použít jeho funkci, zahrňte do našeho kódu hlavičkový soubor iostream.
- Chcete-li používat jeho funkce, zahrňte do našeho kódu soubor vektorových hlaviček.
- Zahrňte do našeho kódu jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
- Zavolejte funkci main(). Programová logika by měla být přidána do těla této funkce.
- Vytvořte vektor s názvem vector1 pro ukládání celých čísel.
- Pomocí cyklu for vytvořte proměnnou x s hodnotami od 1 do 10.
- Do vektoru vložíme hodnoty proměnné x.
- Vytiskněte velikost vektoru vedle jiného textu na konzole.
- Vytiskněte kapacitu vektoru vedle jiného textu na konzole.
- Vytiskněte maximální počet položek, které může vektor pojmout vedle jiného textu na konzole.
- Změňte velikost vektoru tak, aby obsahoval pouze 5 prvků.
- Vytiskněte novou velikost vektoru vedle jiného textu.
- Zkontrolujte, zda vektor není prázdný.
- Pokud vektor není prázdný, vytiskněte text na konzole.
- Pomocí příkazu else uveďte, co dělat, pokud je vektor prázdný.
- Text, který se má vytisknout na konzole, pokud je vektor prázdný.
- Program musí po úspěšném dokončení vrátit hodnotu.
- Konec těla funkce main().





