Cod sursa(job #2971276)

Utilizator dragutamihai1234Draguta Mihai dragutamihai1234 Data 26 ianuarie 2023 22:52:13
Problema Deque Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.15 kb
#include <iostream>
#include <deque>

using namespace std;

deque<int> D;
deque<int>::iterator it;         ///iterator read/write
deque<int>::const_iterator itc;  ///iterator read only

void afis()
{
    if(D.empty())
    {
        cout << "D este vida.\n\n";
        return;
    }
    else
        cout << "D nu este vida.\n";
    //
    cout << "D contine " << D.size() << " numere.\n";
    //
    for(auto &x : D)
        cout << ' ' << x;
    cout << '\n';
    //
    for(itc = D.begin(); itc != D.end(); ++itc)
        cout << ' ' << *itc;
    cout << '\n';
    //
    cout << "Primul element: " << D.front() << '\n';
    cout << "Ultimul element: " << D.back() << '\n';
    cout << '\n';
}

int main()
{
    int v[] = {10, 13, 16, 22, 6};
    //afis();
    //
    for(unsigned i = 0; i < sizeof(v) / sizeof(int); i++)
        D.push_back(v[i]);
    //afis();
    //
    D.push_front(99);
    D.push_back(33);
    //afis();
    //
    D.pop_front();
    afis();
    //
    D.pop_back();
    afis();
    //
    it = D.begin() + 2;
    D.insert(it, 333);
    afis();
    //
    for(it = D.begin(); it != D.end(); ++it)
        *it += 22;
    //afis();
    //
    for(auto &x : D)
        x -= 33;
    //afis();
    return 0;
}

/**
  Coadă (listă) cu două capete
  ============================

  https://www.infoarena.ro/deque-si-aplicatii

  deque (double-ended queue) - este o coadă cu operații rapide
  ==========================   de adăugare și eliminare la ambele capete

  Declarare:
  =========
  #include <deque>
  . . .
  deque<tip_elemente> D;
  . . .

  Metode:
  ======
  ▪ front() - întoarce primul element
  ▪ back() - întoarce ultimul element
  ▪ push_front() - inserează un element în faţă
  ▪ push_back() - inserează un element în spate
  ▪ pop_front() - scoate primul element
  ▪ pop_back() - scoate ultimul element
  ▪ empty() - întoarce true dacă în deque nu se găseşte niciun element
              şi false în caz contrar
  ▪ insert(it, valoare) - inserează o valoare pe poziția indicată
                           de iteratorul it
 */