Vektor ve standardní knihovně šablon C ++ (STL) s příkladem

Obsah:

Anonim

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:

vector  name (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:

  1. Zahrňte soubor záhlaví iostream do našeho kódu. Umožní nám to číst a zapisovat do konzoly.
  2. Zahrňte do našeho kódu vektorový hlavičkový soubor. Umožní nám to pracovat s vektory v C ++.
  3. Zahrňte standardní obor názvů, abyste mohli používat jeho třídy a funkce, aniž byste jej museli volat.
  4. Zavolejte funkci main (), do které by měla 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 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.
  8. 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.
  9. Vytiskněte nějaký text na konzoli
  10. 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 ().
  11. Vytiskněte hodnoty, na které ukazuje iterátorová proměnná an na konzole pro každou iteraci.
  12. 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.
  13. 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 ().
  14. Na konzole pro každou iteraci vytiskněte hodnoty, na které ukazuje proměnná iterátoru a.
  15. Hlavní funkce by měla vrátit hodnotu, pokud je program úspěšně spuštěn.
  16. 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:

  1. Chcete-li používat jeho funkce, zahrňte do našeho kódu soubor záhlaví iostream.
  2. Chcete-li používat jeho funkce, zahrňte do našeho kódu vektorový hlavičkový soubor.
  3. Chcete-li používat své třídy, aniž byste jej volali, zahrňte standardní obor názvů.
  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 k uložení některých celočíselných hodnot.
  7. Uložte 5 prvků do vektorových čísel. Každý s hodnotou 1.
  8. Vytiskněte nějaký text na konzoli
  9. Proměnnou iterátoru a použijte k iteraci nad prvky vektorových čísel.
  10. Vytiskněte hodnoty vektorových čísel na konzole pro každou iteraci.
  11. Přidejte hodnotu 2 na konec vektorových čísel.
  12. Deklarujte celočíselnou proměnnou n pro uložení velikosti vektorových čísel.
  13. Tiskněte spolu s dalším textem poslední hodnotu vektorových čísel. Mělo by vrátit 2.
  14. Odeberte poslední prvek z vektorových čísel. 2 budou odstraněny.
  15. Tisk textu na konzoli. \ N přesune kurzor na nový řádek, aby tam vytiskl text.
  16. Proměnnou iterátoru a použijte k iteraci nad prvky vektorových čísel.
  17. Vytiskněte hodnoty vektorových čísel na konzole pro každou iteraci.
  18. Vložte hodnotu 7 na začátek vektorových čísel.
  19. Vytiskněte první hodnotu vektorových čísel spolu s dalším textem. Mělo by se vrátit 7.
  20. Odstraňte všechny prvky z vektorových čísel.
  21. Po vymazání veškerého obsahu vytiskněte velikost vektoru spolu s dalším textem. 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 () - 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:

  1. Chcete-li použít jeho funkci, zahrňte do našeho kódu soubor záhlaví iostream.
  2. Chcete-li používat jeho funkce, zahrňte do našeho kódu vektorový hlavičkový soubor.
  3. Zahrňte do našeho kódu std namespace, abyste mohli používat jeho třídy, aniž byste jej volali.
  4. Zavolejte funkci main (). Logika programu by měla být přidána do těla této funkce.
  5. Vytvořte vektor s názvem vector1 pro uložení celých čísel.
  6. Pomocí smyčky for vytvořte proměnnou x s ​​hodnotami od 1 do 10.
  7. Zatlačte hodnoty proměnné x do vektoru.
  8. Vytiskněte velikost vektoru spolu s dalším textem na konzole.
  9. Vytiskněte kapacitu vektoru spolu s dalším textem na konzole.
  10. Vytiskněte maximální počet položek, které může vektor obsahovat, spolu s dalším textem na konzole.
  11. Změňte velikost vektoru tak, aby obsahoval pouze 5 prvků.
  12. Vytiskněte novou velikost vektoru spolu s dalším textem.
  13. Zkontrolujte, zda vektor není prázdný.
  14. Pokud není vektor prázdný, vytiskněte text na konzolu.
  15. Pomocí příkazu else uveďte, co dělat, pokud je vektor prázdný.
  16. Text, který se vytiskne na konzoli, pokud je vektor prázdný.
  17. Po úspěšném dokončení musí program vrátit hodnotu.
  18. 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.