Vector
Tento príklad ukazuje rôzne metódy práce s std::vector<std::string>
v C++17.
#include <iostream>
#include <vector>
#include <string>
using namespace std;
int main() {
// Deklarácia a inicializácia vektora reťazcov
vector<string> words = {"C++", "je", "skvelý", "jazyk"};
// Pridanie nového prvku na koniec vektora
words.push_back("!");
// Výpis obsahu vektora pomocou range-based for loop (C++11+)
cout << "Obsah vektora: ";
for (const string &word : words) {
cout << word << " ";
}
cout << endl;
// Prístup k prvkom pomocou indexovania
cout << "Prvý prvok: " << words[0] << endl;
cout << "Posledný prvok: " << words.back() << endl;
// Použitie iterátorov na výpis obsahu vektora
cout << "Výpis cez iterátory: ";
for (auto it = words.begin(); it != words.end(); ++it) {
cout << *it << " ";
}
cout << endl;
// Vymazanie posledného prvku
words.pop_back();
// Výpis veľkosti a kapacity
cout << "Veľkosť vektora: " << words.size() << endl;
cout << "Kapacita vektora: " << words.capacity() << endl;
// Použitie metódy emplace_back() na efektívne pridanie prvku
words.emplace_back("moderný");
// Výpis upraveného vektora
cout << "Upravený vektor: ";
for (const auto &word : words) {
cout << word << " ";
}
cout << endl;
return 0;
}
Vysvetlenie kódu:
Deklarácia a inicializácia vektora
vector<string> words = {"C++", "je", "skvelý", "jazyk"};
std::vector<std::string>
je dynamické pole reťazcov.- Inicializujeme ho štyrmi slovami.
Pridanie prvku na koniec (
push_back()
)words.push_back("!");
- Pridá reťazec
"!"
na koniec vektora.
- Pridá reťazec
Výpis obsahu pomocou
range-based for loop
for (const string &word : words) { cout << word << " "; }
const string &word
zabraňuje zbytočnej kopírovaniu.
Prístup k prvkom cez indexy
cout << "Prvý prvok: " << words[0] << endl; cout << "Posledný prvok: " << words.back() << endl;
words[0]
vráti prvý prvok.words.back()
vráti posledný prvok.
Použitie iterátorov na výpis
for (auto it = words.begin(); it != words.end(); ++it) { cout << *it << " "; }
begin()
vráti iterátor na prvý prvok.end()
vráti iterátor za posledným prvkom.
Vymazanie posledného prvku (
pop_back()
)words.pop_back();
- Odstráni posledný prvok z vektora.
Výpis veľkosti a kapacity
cout << "Veľkosť vektora: " << words.size() << endl; cout << "Kapacita vektora: " << words.capacity() << endl;
size()
vráti aktuálny počet prvkov.capacity()
vráti počet prvkov, ktoré môže vektor uložiť bez alokácie.
Použitie
emplace_back()
words.emplace_back("moderný");
emplace_back()
je efektívnejšia verziapush_back()
, pretože konštruuje objekt priamo v pamäti vektora.
Očakávaný výstup:
Obsah vektora: C++ je skvelý jazyk !
Prvý prvok: C++
Posledný prvok: !
Výpis cez iterátory: C++ je skvelý jazyk !
Veľkosť vektora: 4
Kapacita vektora: 8
Upravený vektor: C++ je skvelý jazyk moderný