Quer criar um algoritmo que utilize somente os últimos valores adicionados em um array fixo? Esse método é chamado de Circular Buffer, ou seja, quando você adiciona um novo valor no array, você está sobrescrevendo o próximo valor do array.
Pensando em um vetor, é como se todos os valores recuassem uma posição, com isso removendo o primeiro valor do vetor e alterando o ultimo valor do vetor.
A imagem abaixo explica como funciona o Array Circular.
Boost Circular Buffer
Caso você não queira desenvolver o seu array circular, você pode utilizar uma biblioteca pronta que a Boost disponibiliza chamada Boost::circular_buffer.
Exemplo de Uso
#include <iostream> #include <boost/circular_buffer.hpp> int main(){ // declarando um array circular de inteiros de 3 posições boost::circular_buffer<int> cb{ 3 }; // adicionando o valor 0, 1 e 2 cb.push_back(0); cb.push_back(1); cb.push_back(2); /** ouput: /* 0 /* 1 /* 2 **/ std::cout << "output:" << std::endl; for (int i : cb) std::cout << i << std::endl; cb.push_back(3); cb.push_back(4); /** ouput: /* 2 /* 3 /* 4 **/ std::cout << "output:" << std::endl; for (int i : cb) std::cout << i << std::endl; return 0; }
Links de Referências
http://www.boost.org/doc/libs/1_61_0/doc/html/circular_buffer.html
https://theboostcpplibraries.com/boost.circularbuffer
Tem alguma dúvida ou sugestão? Deixe nos comentários!