List
Tento príklad ukazuje použitie std::list
v C++17 na dynamickú manipuláciu s prvkami zoznamu, vkladanie, mazanie a
iteráciu.
#include <iostream>
#include <list>
using namespace std;
int main() {
// Deklarácia obojsmerne viazaného zoznamu (doubly linked list)
list<int> myList = {10, 20, 30, 40};
// Pridanie prvkov na začiatok a koniec zoznamu
myList.push_front(5);
myList.push_back(50);
// Výpis prvkov zoznamu
cout << "Obsah zoznamu: ";
for (int num : myList) {
cout << num << " ";
}
cout << endl;
// Prístup k prvému a poslednému prvku
cout << "Prvý prvok: " << myList.front() << endl;
cout << "Posledný prvok: " << myList.back() << endl;
// Odstránenie prvého a posledného prvku
myList.pop_front();
myList.pop_back();
cout << "Po pop_front() a pop_back(): ";
for (int num : myList) {
cout << num << " ";
}
cout << endl;
// Vloženie prvku na špecifickú pozíciu pomocou iterátora
auto it = myList.begin();
advance(it, 2); // Posun iterátora na 3. pozíciu
myList.insert(it, 25);
cout << "Po vložení 25 na 3. pozíciu: ";
for (int num : myList) {
cout << num << " ";
}
cout << endl;
// Odstránenie konkrétneho prvku
myList.remove(20);
cout << "Po odstránení 20: ";
for (int num : myList) {
cout << num << " ";
}
cout << endl;
// Veľkosť zoznamu
cout << "Veľkosť zoznamu: " << myList.size() << endl;
return 0;
}
Vysvetlenie kódu:
Deklarácia
std::list<int>
list<int> myList = {10, 20, 30, 40};
std::list
je obojsmerne viazaný zoznam (doubly linked list).- Na rozdiel od
std::vector
umožňuje efektívne vkladanie a mazanie kdekoľvek.
Pridanie prvkov na začiatok a koniec
myList.push_front(5); myList.push_back(50);
push_front(value)
pridá hodnotu na začiatok.push_back(value)
pridá hodnotu na koniec.
Výpis prvkov zoznamu pomocou
range-based for loop
for (int num : myList) { cout << num << " "; }
- Iterujeme cez celý zoznam a vypisujeme hodnoty.
Prístup k prvému a poslednému prvku
cout << "Prvý prvok: " << myList.front() << endl; cout << "Posledný prvok: " << myList.back() << endl;
front()
vráti prvý prvok.back()
vráti posledný prvok.
Odstránenie prvého a posledného prvku (
pop_front()
apop_back()
)myList.pop_front(); myList.pop_back();
pop_front()
odstráni prvý prvok.pop_back()
odstráni posledný prvok.
Vloženie prvku na konkrétnu pozíciu (
insert()
)auto it = myList.begin(); advance(it, 2); // Posun iterátora na 3. pozíciu myList.insert(it, 25);
insert(iterator, value)
vloží hodnotu pred daný iterátor.
Odstránenie konkrétneho prvku (
remove()
)myList.remove(20);
remove(value)
odstráni všetky výskyty hodnoty.
Zistenie veľkosti (
size()
)cout << "Veľkosť zoznamu: " << myList.size() << endl;
size()
vráti počet prvkov v zozname.
Očakávaný výstup:
Obsah zoznamu: 5 10 20 30 40 50
Prvý prvok: 5
Posledný prvok: 50
Po pop_front() a pop_back(): 10 20 30 40
Po vložení 25 na 3. pozíciu: 10 20 25 30 40
Po odstránení 20: 10 25 30 40
Veľkosť zoznamu: 4