Vektor v C++ Standardní knihovna šablon (STL) s příkladem
Co je to C++ Vektor?
A C++ vektor 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. Ukládá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ů.
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í potřeba měnit velikost vektoru. Vložení nebo odstranění prvku na začátku vektoru trvá lineárně.
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í 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:
vector <data-type> name (items)
- Jak je uvedeno výše, začneme klíčovým slovem vector.
- Datový typ je datový typ prvků, které mají být uloženy 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 přistupovat k prvkům, které jsou uloženy ve vektoru. Je to objekt, který funguje jako ukazatel. Zde jsou běžné iterátory podporované C++ vektory:
- vector:: begin(): dává iterátor, který ukazuje na první prvek vektoru.
- vector:: end(): 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 vektorové prvky.
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.
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 cyklus for, který nám pomůže iterovat vektor. Proměnná nám pomůže iterovat přes vektorové prvky od 1st na 5th Prvky.
- 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().
- Vytiskněte hodnoty, na které ukazuje proměnná iterátoru a na konzole pro každou iteraci.
- Vytiskněte nějaký text na konzoli. \n je znak nového řádku, přesouvá kurzor na nový řádek a tiskne se odtud.
- Použijte proměnnou iterátoru k iteraci prvků vektoru nums od začátku až po prvek za koncem. 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().
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 jej použít, zahrňte do našeho kódu soubor záhlaví vektoru funkce.
- 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
K určení kapacity vektoru použijte následující funkce:
- Velikost () –Vrací počet položek ve vektoru.
- Max_size() -Vrátí nejvyšší počet položek, které může vektor uložit.
- Kapacita () – It vrátí množství úložného prostoru přiděleného vektoru.
- Změnit velikost () – It 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, budou na zadní stranu vektoru přidány další položky.
- Prázdné () –it vrací true, pokud je vektor prázdný. V opačném případě vrátí hodnotu false.
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().
Shrnutí
- A C++ vector je dynamické pole schopné automaticky změnit velikost, když je z něj přidán nebo odstraněn prvek.
- Úložiště pro vektor je řešeno automaticky kontejnerem.
- Prvky vektoru jsou uloženy v souvislém úložišti, aby bylo možné k nim přistupovat a poté 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ílnou dobu.
- Odstranění prvku z vektoru trvá konstantní čas.
- Vložení nebo odstranění prvku na začátku trvá lineárně.
- Vektory by se měly používat při práci s datovými prvky, které se konzistentně mění.
- Také můžete použít vektory, pokud velikost dat není známa před začátkem.





