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:

Modifikátory

Zde je snímek obrazovky kódu:

Modifikátory

Vysvětlení kódu:

  1. Zahrňte do našeho kódu hlavičkový soubor iostream. Umožní nám to číst a zapisovat do konzole.
  2. Zahrňte soubor vektorového záhlaví do našeho kódu. Umožní nám to pracovat s vektory C++.
  3. Zahrňte jmenný prostor std, abyste mohli používat jeho třídy a funkce bez jeho volání.
  4. Zavolejte funkci main(), do které má být přidána logika programu.
  5. { označuje začátek těla funkce main().
  6. Deklarujte vektor s názvem nums pro uložení sady celých čísel.
  7. 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.
  8. 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.
  9. Vytiskněte nějaký text na konzoli
  10. 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().
  11. Vytiskněte hodnoty, na které ukazuje proměnná iterátoru a na konzole pro každou iteraci.
  12. Vytiskněte nějaký text na konzoli. \n je znak nového řádku, přesouvá kurzor na nový řádek a tiskne se odtud.
  13. 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().
  14. Pro každou iteraci vytiskněte na konzole hodnoty, na které ukazuje proměnná iterátoru a.
  15. Funkce main by měla vrátit hodnotu, pokud program běží úspěšně.
  16. 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:

Modifikátory

Zde je snímek obrazovky kódu:

Modifikátory

Vysvětlení kódu:

  1. Chcete-li používat jeho funkce, zahrňte do našeho kódu hlavičkový soubor iostream.
  2. Chcete-li jej použít, zahrňte do našeho kódu soubor záhlaví vektoru funkce.
  3. Zahrňte jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
  4. Zavolejte funkci main(). Logika programu by měla být přidána do jeho těla.
  5. Začátek těla funkce main().
  6. Deklarujte vektor s názvem nums, abyste uložili nějaké celočíselné hodnoty.
  7. Uložte 5 prvků do vektorových čísel. Každý s hodnotou 1.
  8. Vytiskněte nějaký text na konzoli
  9. Použijte proměnnou iterátoru a k iteraci prvků vektoru nums.
  10. Vytiskněte hodnoty čísel vektorů na konzole pro každou iteraci.
  11. Přidejte hodnotu 2 na konec vektoru nums.
  12. Deklarujte celočíselnou proměnnou n pro uložení velikosti vektorových čísel.
  13. Vytiskněte poslední hodnotu vektorových čísel vedle jiného textu. Mělo by vrátit 2.
  14. Odeberte poslední prvek z čísel vektorů. 2 bude odstraněna.
  15. Tisk textu na konzole. \n přesune kurzor na nový řádek, aby se tam vytiskl text.
  16. Použijte proměnnou iterátoru a k iteraci prvků vektoru nums.
  17. Vytiskněte hodnoty čísel vektorů na konzole pro každou iteraci.
  18. Vložte hodnotu 7 na začátek vektoru nums.
  19. Vytiskněte první hodnotu vektorových čísel vedle dalšího textu. Mělo by se vrátit 7.
  20. Odstraňte všechny prvky z čísel vektorů.
  21. Po vymazání veškerého obsahu vytiskněte velikost čísla vektoru vedle ostatního textu. Mělo by vrátit 0.
  22. 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:

Kapacita

Zde je snímek obrazovky kódu:

Kapacita

Vysvětlení kódu:

  1. Chcete-li použít jeho funkci, zahrňte do našeho kódu hlavičkový soubor iostream.
  2. Chcete-li používat jeho funkce, zahrňte do našeho kódu soubor vektorových hlaviček.
  3. Zahrňte do našeho kódu jmenný prostor std, abyste mohli používat jeho třídy bez jeho volání.
  4. Zavolejte funkci main(). Programová logika by měla být přidána do těla této funkce.
  5. Vytvořte vektor s názvem vector1 pro ukládání celých čísel.
  6. Pomocí cyklu for vytvořte proměnnou x s ​​hodnotami od 1 do 10.
  7. Do vektoru vložíme hodnoty proměnné x.
  8. Vytiskněte velikost vektoru vedle jiného textu na konzole.
  9. Vytiskněte kapacitu vektoru vedle jiného textu na konzole.
  10. Vytiskněte maximální počet položek, které může vektor pojmout vedle jiného textu na konzole.
  11. Změňte velikost vektoru tak, aby obsahoval pouze 5 prvků.
  12. Vytiskněte novou velikost vektoru vedle jiného textu.
  13. Zkontrolujte, zda vektor není prázdný.
  14. Pokud vektor není prázdný, vytiskněte text na konzole.
  15. Pomocí příkazu else uveďte, co dělat, pokud je vektor prázdný.
  16. Text, který se má vytisknout na konzole, pokud je vektor prázdný.
  17. Program musí po úspěšném dokončení vrátit hodnotu.
  18. 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.