Queue
Príklad implementácie jednoduchej fronty reťazcov (string
). Úložisko prvkov fronty je implementovaná pomocou
kontajnera vector
.
#include <iostream>
#include <vector>
class Queue {
private:
std::vector<std::string> values;
public:
Queue() = default;
~Queue() = default;
void push(const std::string &value) {
values.push_back(value);
}
std::string pop() {
std::string front = values.front();
values.erase(values.begin());
return front;
}
size_t size() const {
return values.size();
}
std::string front() {
return values.front();
}
std::string back() {
return values.back();
}
std::string to_string() {
std::string result;
for (const std::string &value: values) {
result += value + " ";
}
return result;
}
};
Vysvetlenie
Táto trieda je obdoba štandardnej FIFO fronty – teda First In, First Out.
Použité hlavičkové súbory
#include <iostream> // pre vstup/výstup (napr. std::cout)
#include <vector> // pre std::vector
Trieda Queue
Trieda slúži na uchovávanie a manipuláciu s frontou reťazcov.
Atribút:
std::vector<std::string> values;
- Uchováva hodnoty vo fronte ako dynamické pole (vektor).
Metódy
Queue()
– Konštruktor
Queue() = default;
- Používa predvolený konštruktor – žiadne špeciálne správanie.
~Queue()
– Destruktor
~Queue() = default;
- Opäť predvolený, lebo
std::vector
sa postará o uvoľnenie pamäte.
void push(const std::string &value)
values.push_back(value);
- Pridá nový prvok na koniec fronty.
std::string pop()
std::string front = values.front();
values.erase(values.begin());
return front;
- Vráti a odstráni prvok z prednej časti fronty.
- Toto je klasické FIFO správanie.
- ⚠️ Mínus:
erase(values.begin())
je lineárne pomalé O(n), pretože sa musia prvky presúvať.
size_t size() const
return values.size();
- Vráti aktuálny počet prvkov vo fronte.
std::string front()
return values.front();
- Vráti (bez odstránenia) prvý prvok vo fronte.
std::string back()
return values.back();
- Vráti posledný prvok vo fronte (ten, ktorý bol pridaný ako posledný).
std::string to_string()
std::string result;
for (const std::string &value: values) {
result += value + " ";
}
return result;
- Vytvorí reťazec reprezentujúci obsah fronty (hodnoty oddelené medzerou).
Použitie (príklad)
Queue q;
q.push("A");
q.push("B");
q.push("C");
std::cout << q.to_string(); // "A B C "
std::cout << q.pop(); // "A"
std::cout << q.front(); // "B"