Fronty jsou typem adaptérů kontejnerů, které fungují v uspořádání typu první dovnitř, první ven (FIFO). Prvky jsou vloženy na zadní (konec) a jsou odstraněny zepředu. Fronty používají zapouzdřený objekt deque resp seznam (třída sekvenčního kontejneru) jako jeho základní kontejner, který poskytuje specifickou sadu členských funkcí pro přístup k jeho prvkům.
Následuje příklad, který demonstruje frontu a její různé metody.
CPP
hodnota řetězce
// CPP code to illustrate Queue in> // Standard Template Library (STL)> #include> #include> using> namespace> std;> // Print the queue> void> showq(queue<>int>>gq)> {> >queue<>int>>g = gq;> >while> (!g.empty()) {> >cout <<>' '> << g.front();> >g.pop();> >}> >cout <<>'
'>;> }> // Driver Code> int> main()> {> >queue<>int>>gquiz;> >gquiz.push(10);> >gquiz.push(20);> >gquiz.push(30);> >cout <<>'The queue gquiz is : '>;> >showq(gquiz);> >cout <<>'
gquiz.size() : '> << gquiz.size();> >cout <<>'
gquiz.front() : '> << gquiz.front();> >cout <<>'
gquiz.back() : '> << gquiz.back();> >cout <<>'
gquiz.pop() : '>;> >gquiz.pop();> >showq(gquiz);> >return> 0;> }> |
>
>Výstup
The queue gquiz is : 10 20 30 gquiz.size() : 3 gquiz.front() : 10 gquiz.back() : 30 gquiz.pop() : 20 30>
Metody fronty jsou:
binární vyhledávací strom vs binární strom
Časová složitost a definice následujících funkcí jsou následující:
| fronta::empty() | O(1) |
| fronta::velikost() | O(1) |
| fronta::místo() | O(1) |
| fronta::front() | O(1) |
| fronta::zpět() | O(1) |
| fronta::push(g) | O(1) |
| fronta::pop() | O(1) |
| Metoda | Definice |
|---|---|
| fronta::empty() | Vrací, zda je fronta prázdná. Pokud je fronta prázdná, vrátí hodnotu true, jinak vrátí hodnotu false. |
| fronta::velikost() | Vrátí velikost fronty. |
| fronta::swap() | Vyměňte obsah dvou front, ale fronty musí být stejného datového typu, i když velikosti se mohou lišit. |
| fronta::místo() | Vložte nový prvek do kontejneru fronty, nový prvek se přidá na konec fronty. |
| fronta::front() | Vrátí odkaz na první prvek fronty. |
| fronta::zpět() | Vrátí odkaz na poslední prvek fronty. |
| fronta::push(g) | Přidá prvek „g“ na konec fronty. |
| fronta::pop() | Odstraní první prvek fronty. |
C++ program pro některé další metody
C++
// CPP code to illustrate Queue operations in STL> // Divyansh Mishra -->divyanshmishra101010> #include> #include> using> namespace> std;> // Print the queue> void> print_queue(queue<>int>>q)> {> >queue<>int>>teplota = q;> >while> (!temp.empty()) {> >cout << temp.front()<<>;> >temp.pop();> >}> >cout <<>'
'>;> }> // Driver Code> int> main()> {> >queue<>int>>q1;> >q1.push(1);> >q1.push(2);> >q1.push(3);> >cout <<>'The first queue is : '>;> >print_queue(q1);> > >queue<>int>>q2;> >q2.push(4);> >q2.push(5);> >q2.push(6);> >cout <<>'The second queue is : '>;> >print_queue(q2);> > > >q1.swap(q2);> > >cout <<>'After swapping, the first queue is : '>;> >print_queue(q1);> >cout <<>'After swapping the second queue is : '>;> >print_queue(q2);> > >cout/returns false since q1 is not empty return 0; }> |
abeceda s čísly
>
>Výstup
The first queue is : 1 2 3 The second queue is : 4 5 6 After swapping, the first queue is : 4 5 6 After swapping the second queue is : 1 2 3 0>
Časová a prostorová složitost operací v tomto kódu je následující:
funkce print_queue:
Časová složitost: O(n), kde n je počet prvků ve frontě.
Složitost prostoru: O(n), kde n je počet prvků ve frontě.
q1.push(1), q1.push(2), q1.push(3), q2.push(4), q2.push(5), q2.push(6):
Časová složitost: O(1) pro každou operaci push.
Složitost prostoru: O(n), kde n je celkový počet prvků v obou frontách.
q1.swap(q2):
Časová složitost: O(1) pro každou operaci swapu.
Prostorová složitost: O(1), protože tato operace pouze prohodí vnitřní ukazatele dvou front.
q1.empty():
jak třídit pole v Javě
Časová složitost: O(1), protože tato operace jednoduše zkontroluje, zda je fronta prázdná.
Prostorová složitost: O(1), protože pro tuto operaci není použit žádný prostor navíc.
Celkově jsou časové a prostorové složitosti tohoto kódu přiměřené a efektivní pro typické případy použití.
Nedávné články o C++ Queue