Existe algum método POP_FRONT no C ++ stdvector?

Existe algum método POP_FRONT no C ++ stdvector?
Uma linguagem de programação de alto nível chamada C ++ pode suportar uma ampla gama de estruturas de dados, incluindo vetores. Um vetor é uma variedade dinâmica de elementos de memória adjacentes com um tamanho máximo predeterminado. É um recipiente flexível e prático em C ++ que fornece gerenciamento de memória eficaz e alocação flexível. Uma das perguntas frequentes entre os programadores de C ++ é se existe um pop_front Método em std :: vetor. Vamos descobrir:

Existe algum método pop_front em C ++ std :: Vector?

Não é a resposta rápida para esta consulta. Os vetores não possuem um método Pop_front embutido na biblioteca padrão C ++, ao contrário de outras classes de contêineres como Deque e List. O princípio do design fundamental dos vetores, que promove um rápido acesso aleatório aos elementos, é a causa dessa ausência. A remoção do primeiro elemento exige uma mudança de todos os componentes seguintes, já que os vetores armazenam seus elementos em um bloco de memória contíguo.

É essencial olhar para pop_back Para entender o porquê pop_front não está disponível em std :: vetor. Um método vetorial comum chamado pop_back elimina o componente final do contêiner. Isso é realizado executando o destruidor do membro que foi removido e diminuindo o tamanho do vetor por um. À medida que os vetores se expandem de suas costas, a eliminação do componente final é uma operação simples que não envolve a realocação de outros elementos. No entanto, a eliminação do elemento inicial faria com que todos os componentes subseqüentes movessem um espaço para a esquerda. Como este procedimento copia todos os elementos vetoriais, é incrivelmente ineficiente, especialmente para grandes vetores. O pop_front é, portanto, excluído de STD :: Vector para impedir que as operações vetoriais sejam lentas.

Alternativas do método pop_front em c++

Existem inúmeras maneiras de remover componentes da frente de um vetor, apesar da falta de um pop_front método.

1: Método de apagar

Uma técnica é utilizar o Método Apagar no elemento inicial do vetor. O Método Apagar modifica os componentes restantes para refletir a remoção de um elemento ou conjunto de itens do vetor. Assim, podemos usar a seguinte linha de código em C ++ para alcançar o mesmo comportamento que pop_front:

#incluir
#incluir
modelo
void pop_front (std :: vetor & v)

if (v.tamanho ()> 0)
v.Apagar (v.começar());


int main ()

std :: vetor nums = 5,6,7,8,9;
pop_front (nums);
para (int i: nums)
std :: cout << i << ";

retornar 0;

No código acima, estamos usando o apagar() função como uma alternativa de pop_front () Para remover o primeiro elemento de um vetor inicializado. Nós definimos uma função chamada pop_front (), E na função, estamos usando o começar() e apagar() funções para remover o primeiro elemento do vetor.

Saída

2: Método Deque

Outro recipiente na biblioteca padrão C ++ é o deque, que oferece a capacidade de um recipiente de matriz dinâmica com a capacidade adicional de adicionar e remover elementos da frente e do traseiro. Usando um Deque (fila de ponta dupla) no lugar de um vetor é um substituto adicional para pop_front. Portanto, podemos usá -lo para alcançar o mesmo comportamento que pop_front:

#incluir
#incluir
usando namespace std;
int main ()

deque mydeque;
mydeque.push_front (4);
mydeque.push_front (5);
mydeque.push_front (6);
mydeque.pop_front ();
para (automotivo = mydeque.começar(); isto != mydeque.fim(); ++ it)
cout << " << *it;

No código acima, estamos usando um push_front () função para empurrar os valores em um deque e um pop_front () função para remover o primeiro elemento do deque.

Saída

Conclusão

Devido à sua estrutura de memória interna e princípios de design, std :: vetor em C ++ não tem um pop_front método. Existem, no entanto, várias técnicas adicionais, como o uso de deque e apagar métodos que podem ser usados ​​para remover elementos da frente do recipiente. Ao selecionar a melhor abordagem para sua implementação, os programadores devem comprometer entre conveniência e eficiência.