Como faço para remover um elemento específico de um vetor em C++?

Como faço para remover um elemento específico de um vetor em C++?
O vetor C ++ tem muitas funções de membro. Duas dessas funções de membro são apagadas () e pop_back (). Pop_back () remove o último elemento do vetor. Para remover todos os elementos do vetor, usando Pop_back (), a função pop_back () deve ser repetida o número de vezes que existem elementos. A função EASE () pode remover um elemento desde o início, dentro ou o fim do vetor. Para remover todos os elementos do vetor, usando EASE (), a função EASE () deve ser repetida o número de vezes que existem elementos, começando a partir do primeiro elemento.

Para remover um elemento específico do vetor C ++, o elemento deve ser identificado. Em relação à função de membro EASE (), o elemento é identificado por um iterador. A próxima pergunta é: “O que é um iterador?" - Veja abaixo. Como a função Pop_back () do membro remove o último elemento por definição, o elemento específico que ele remove já foi identificado indiretamente.

Para usar a biblioteca vetorial em C ++, o programa deve começar com:

#incluir
#incluir
usando namespace std;

Este artigo explica como remover um elemento específico do vetor C ++, começando com a explicação do iterador principal em C++. Todo o código vetorial para este artigo está no corpo da função principal ().

Conteúdo do artigo

  • Introdução - Veja acima
  • Identificando elemento vetorial
  • Remoção com EASE ()
  • Removendo com pop_back
  • Conclusão

Identificando elemento vetorial

Identificação por referência
Considere o seguinte vetor:

vetor vtr = 'a', 'b', 'c', 'd', 'e';

vtr [0] retorna 'a'. VTR [1] retorna 'B'. VTR [2] retorna 'C'. VTR [3] retorna 'D'. VTR [4] retorna 'e'. Isso está identificando por referência. O número em colchetes, é chamado de índice. Isso pode ser feito em um loop for, como mostra o seguinte programa:

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

vetor vtr = 'a', 'b', 'c', 'd', 'e';
para (int i = 0; icout << vtr[i] << ";
cout << endl;
retornar 0;

A saída é:

A B C D E

Identificando pelo iterador
Considere o seguinte vetor:

vetor vtr = 'a', 'b', 'c', 'd', 'e';

it = vtr.begin (), significa 'é um iterador que aponta para' a ' .

It ++ aponta para 'b'.

Ele ++ aponta para 'C', incrementado depois de apontar para 'B'.

Ele ++ aponta para 'D', incrementado depois de apontar para 'C'.

Ele ++ aponta para 'e', ​​incrementado depois de apontar 'd'.

It ++ aponta para VTR.end (), que está além do último elemento, incrementado depois de apontar para 'e'.

Isso pode ser feito em um loop for, como mostra o seguinte programa:

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

vetor vtr = 'a', 'b', 'c', 'd', 'e';
para (vetor :: iterator it = vtr.começar(); isto != vtr.fim(); IT ++)
cout << *it << ";
cout << endl;
retornar 0;

A saída é:

A B C D E

O primeiro iterador foi obtido com a declaração:

vetor :: iterator

onde 'é o identificador do iterador.

Ainda se referindo ao mesmo vetor,

it = vtr.end (), pontos logo depois do último elemento 'e' .

It aponta para 'e'.

Ele aponta para 'd', diminuiu depois de apontar para 'e'.

Ele aponta para 'C', diminuiu depois de apontar para 'D'.

Ele aponta para 'B', diminuiu depois de apontar para 'C'.

Ele aponta para 'A', diminuiu depois de apontar para 'B'.

Esse esquema pode ser usado para exibir o vetor em ordem inversa, como mostra o seguinte programa:

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

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vetor :: iterator it = vtr.fim();
para (it = --it; it> = vtr.começar(); isto--)
cout << *it << ";
cout << endl;
retornar 0;

A saída é:

E D C B A

O iterador inicial para o loop for diminuído. eu.e. "It = -it;". Observe a condição de enquanto estiver no loop for, eu.e. “It> = vtr.começar();".

Para obter o valor apontado pelo Iterador, o iterador deve ser desreferenciado, pelo operador indiretivo, *.

Remoção com EASE ()

A sintaxe para apagar (remover) um elemento de um vetor é:

a.Apagar (Q)

onde 'a' é o nome do vetor e q é um iterador apontando para o elemento a ser removido. Isto é, q identifica o elemento específico a ser removido. A função de membro retorna um iterador que aponta para o elemento logo após o remover.

Removendo de frente
A função de membro da apagamento pode remover um elemento da frente do vetor. O programa a seguir ilustra o seguinte:

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

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vetor :: iterator q = vtr.começar();
vetor :: iterator p = vtr.apagar (q);
cout << *p << endl;
para (int i = 0; i < vtr.size(); i++)
cout << vtr[i] << ";
cout << endl;
para (vetor :: iterator it = vtr.começar(); isto != vtr.fim(); IT ++)
cout << *it << ";
cout << endl;
retornar 0;

A saída é:

B
B C D E
B C D E

As duas primeiras linhas do programa incluem diretrizes, incluindo as bibliotecas necessárias. A próxima linha declara que qualquer nome usado é do espaço de nome padrão, a menos que indicado de outra forma.

Na função Main (), a primeira declaração declara o vetor. A declaração após retornar um iterador, q, que aponta para o primeiro elemento do vetor. A declaração a seguir é a declaração de interesse. Ele remove o primeiro elemento, que é apontado por q. Ele retorna um iterador que aponta para o elemento, que foi logo após o elemento ser removido. A declaração após imprime o valor do elemento que o iterador está apontando após a remoção. Os próximos dois segmentos de código exibem os valores restantes no vetor. O primeiro desses segmentos de código usa referências. O segundo usa iteradores.

Removendo de dentro
Para remover o elemento de valor, 'C', o iterador retornou, por Begin () deve ser incrementado duas vezes para apontar para o elemento de valor, 'C'. A função de membro ease () pode então usar o iterador para remover o elemento. O programa a seguir ilustra o seguinte:

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

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vetor :: iterator q = vtr.começar();
q ++; q ++;
vetor :: iterator p = vtr.apagar (q);
cout << *p << endl;
para (int i = 0; i < vtr.size(); i++)
cout << vtr[i] << ";
cout << endl;
para (vetor :: iterator it = vtr.começar(); isto != vtr.fim(); IT ++)
cout << *it << ";
cout << endl;
retornar 0;

A saída é:

D
A B D E
A B D E

Removendo pelas costas com EASE ()
Para remover o elemento de valor, 'e', ​​o iterador retornou, até o final () deve ser diminuído uma vez, para apontar para o elemento de valor, 'e'. A função de membro ease () pode então usar o iterador para remover o elemento. O programa a seguir ilustra o seguinte:

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

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vetor :: iterator q = vtr.fim();
Q--;
vetor :: iterator p = vtr.apagar (q);
cout << *p << endl;
para (int i = 0; i < vtr.size(); i++)
cout << vtr[i] << ";
cout << endl;
para (vetor :: iterator it = vtr.começar(); isto != vtr.fim(); IT ++)
cout << *it << ";
cout << endl;
retornar 0;

A saída é:

E
A B C D
A B C D

Há uma nuance aqui. O iterador retornou por end () aponta para o elemento, que deveria ter sido lá, se não tivesse sido removido.

Removendo com pop_back

A função Pop_back () Membro remove o último elemento do vetor, por definição. Portanto, o programador não precisa identificar o último elemento. Sua sintaxe é

a.pop_back ()

onde 'a' é o nome do vetor. Não leva argumento; ele retorna vazio. O programa a seguir remove o último elemento de um vetor:

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

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vtr.pop_back ();
para (int i = 0; i < vtr.size(); i++)
cout << vtr[i] << ";
cout << endl;
para (vetor :: iterator it = vtr.começar(); isto != vtr.fim(); IT ++)
cout << *it << ";
cout << endl;
retornar 0;

A saída é:

A B C D
A B C D

Conclusão

O vetor C ++ tem muitas funções de membro. Duas dessas funções de membro são apagadas () e pop_back (). Pop_back () remove o último elemento do vetor. Para remover todos os elementos do vetor, usando Pop_back (), a função pop_back () deve ser repetida o número de vezes que existem elementos. A função EASE () pode remover um elemento desde o início, dentro ou o fim do vetor. Para remover todos os elementos do vetor, usando EASE (), a função EASE () deve ser repetida o número de vezes que existem elementos, começando a partir do primeiro elemento.

Para remover um elemento específico do vetor C ++, o elemento deve ser identificado. Para a função de membro EASE (), o elemento é identificado por um iterador. Como a função Pop_back () do membro remove o último elemento por definição, o elemento específico que ele remove já foi identificado indiretamente.