// Sacar del frente de un arreglo traslada todo lo demás.
#include <initializer_list>
#include <iostream>
#include <queue>
#include <vector>

#include "tracked.h"

int main() {
    for (int n : {1000, 2000, 4000}) {
        std::vector<Tracked> v;
        v.reserve(n);
        for (int i = 0; i < n; i++) {
            v.push_back(Tracked(i));
        }
        Tracked::reset();
        while (!v.empty()) {
            v.erase(v.begin());
        }
        std::cout << "vaciar " << n << " elementos por el frente: " << Tracked::counts.moves
                  << " movimientos\n";
    }

    std::queue<int> waiting;
    waiting.push(10);
    waiting.push(20);
    waiting.push(30);
    std::cout << "std::queue: front " << waiting.front() << ", back " << waiting.back();
    waiting.pop();
    std::cout << "; tras pop, front " << waiting.front() << ", size " << waiting.size() << "\n";
    return 0;
}
