Loop através de um vetor em C ++

Loop através de um vetor em C ++
Para percorrer um vetor significa acessar todos os elementos do vetor do início ao final ou do final ao começo. Os elementos podem ser acessados ​​para leitura ou escrita (mudança de valor) ou ambos.

Em C ++, o vetor pode ser loopado usando o loop clássico com o subscrito (índice) nos colchetes quadrados. Pode ser loopado usando o range baseado em instrução. Ele pode ser loopado usando a função for_each () incluída na biblioteca de algoritmo.

Conteúdo do artigo

- Looping usando o loop clássico

- Looping usando a estatura baseada em range

- Looping usando a função for_each ()

- Conclusão

Looping usando o loop clássico

Subscrito

Considere o seguinte segmento de código:

vetor vtr = 'a', 'b', 'c', 'd', 'e';
char ch = vtr [2];
cout << ch << endl;

A saída é 'C'. Na segunda declaração, após o nome do vetor, VTR, é os suportes quadrados. Dentro dos suportes quadrados está o índice, que também é o subscrito do vetor. A contagem de índice começa de zero. O índice no código é 2, que retorna o terceiro elemento do vetor.

Loop com subscrito

Para fazer loop com subscrito ou iterador, o loop for usado. O loop while-loop ou o fará-while também pode ser usado, mas o loop for mais conveniente. A sintaxe de um loop for:

para (começo_state; while_condition; próximo/anterior)
//declarações

Loop para a frente

O programa a seguir usa um loop for para avançar, um vetor de caracteres (chars), por subscrito:

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

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

cout << endl;
retornar 0;

A saída é:

A B C D E

A biblioteca vetorial deve ser incluída para que a classe vetorial seja usada. Na função principal do C ++, após a criação do vetor é o loop for. Este loop for resumido da seguinte forma: Leia cada elemento do vetor começando do índice, 0; E embora o fim do vetor ainda não tenha sido alcançado, aumente o índice em 1 para ler o próximo elemento.

Os parênteses do loop for têm a lógica do que ler a seguir, enquanto o bloco do loop for faz a leitura e a impressão no terminal (console).

Lançando para a frente e pulando

No loop acima, a próxima declaração nos parênteses é eu++. Isso é o mesmo que:

i = i + 1

Com isso, os elementos são lidos um após o outro na direção para a frente. Para ler todos os outros elementos (pulando um elemento a cada vez), o próximo argumento nos parênteses deve ser

i = i + 2; que é o mesmo que i+= 2;

O código a seguir lê todos os outros personagens:

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

cout << endl;

A saída é:

ÁS
pular 'b' e 'd'.

Loop para trás

O código a seguir usa um loop para loop para trás, um vetor de caracteres (chars):

int main ()

vetor vtr = 'a', 'b', 'c', 'd', 'e';
para (int i = vtr.tamanho ()-1; euchar ch = vtr [i];
cout << ch << ";

cout << endl;
retornar 0;

A saída é:

E D C B A

O looping começa com o maior índice (4), que é dado por:

vtr.tamanho ()-1

Nesse caso, a função do membro vetorial, size () retorna 5. 1 deve ser subtraído para obter o maior índice de 4 (a contagem do índice começa a partir de 0). Para dar um loop para trás, a declaração anterior nos parênteses agora é "eu-".

Looping para trás e pulando

No loop acima, a declaração anterior é eu-. Isso é o mesmo que:

i = i - 1

Com isso, os elementos são lidos um após o outro na direção inversa. Para ler todos os outros elementos (pulando um elemento a cada vez) para trás, a declaração anterior deve ser

i = i - 2; que é o mesmo que i- = 2;

O código a seguir lê todos os outros personagens, para trás:

vetor vtr = 'a', 'b', 'c', 'd', 'e';
para (int i = vtr.tamanho ()-1; euchar ch = vtr [i];
cout << ch << ";

cout << endl;

A saída é:

E c a

pular 'd' e 'b'.

Looping usando uma classe de iterador

Um vetor pode ser loop com um iterador. Existem seis classes de iterador vetorial. Apenas dois são usados ​​aqui. Os nomes dos dois são: iterator e reverse_iterator. Nas ilustrações aqui, o loop for ainda é usado como loop.

Um iterador é um ponteiro elaborado. Para cada iterador, há uma aula da qual os objetos podem ser instanciados. O objeto instanciado é o iterador.

Loop para a frente

O programa a seguir usa um loop for para avançar, um vetor de caracteres (chars), por iterator:

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

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vetor:: iterator iter = vtr.começar();
para (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;
retornar 0;

A saída é:

A B C D E

Observe como o objeto iterador, ITER foi declarado. O vetor tem a função de membro começar (). Isso retorna um iterador que aponta para o primeiro elemento do vetor. Há outra função de membro, end () para o vetor. Isso retorna um iterador que aponta logo após o último elemento do vetor. O iterador retornado por End () é muito compatível com o iterador retornado por Begin (). Na verdade, eles são do mesmo tipo, iterador.

Nos parênteses, o estado inicial é:

iter = iter;

Os meios que o operando esquerdo, iter, deve começar a digitalização de onde o operando certo, Iter está apontando para.

Este loop com iteradores pode ser resumido da seguinte forma: Leia cada elemento do vetor que começa a partir disso apontado para o ITER; E embora o fim do vetor ainda não tenha sido alcançado, incremente o iterador, iter, para apontar para o próximo elemento para ler o próximo elemento.

O corpo do loop for:

char ch = *iter;
cout << ch << ";

O asterisco nesta posição é um operador de indireção. Obtém o valor apontado para, pelo iterador

Lançando para a frente e pulando com o iterador

No loop acima, o próximo argumento é, iter++. Isso é o mesmo que:

iter = iter + 1

Plus-um com o iterador, significa apontar para o próximo elemento. Isso não significa, adicione o número inteiro 1 ao iterador. Com isso, os elementos são lidos um após o outro na direção para a frente. Para ler todos os outros elementos (pulando um elemento a cada vez), o próximo argumento deve ser

iter = iter + 2; que é o mesmo que ITER+= 2;

O código a seguir lê todos os outros personagens:

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vetor:: iterator iter = vtr.começar();
para (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;

A saída é:

ÁS

pular 'b' e 'd'.

Loop para trás

O código a seguir usa um loop para loop para trás, um vetor de caracteres (chars), usando iteradores:

int main ()

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vetor:: reverse_iterator iter = vtr.rBegin ();
para (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;
retornar 0;

A saída é:

E D C B A

O reverse_iterator foi usado aqui. O vetor tem uma função de membro correspondente, rBegin (), que retorna um iterador que aponta para o último elemento do vetor. Há outra função de membro, rend (), que retorna um iterador que aponta pouco antes do primeiro elemento do vetor.

Para fazer um loop para trás, a declaração anterior nos parênteses ainda é ironicamente, “ITER ++”. E a condição enquanto está ironicamente<'.

Loop para trás e pulando

No loop acima, a declaração anterior é, iter++. Isso é o mesmo que

iter = iter + 1

Com isso, os elementos são lidos um após o outro na direção inversa. Para ler todos os elementos de pedidos (pulando um elemento de cada vez) para trás, a declaração anterior deve ser

iter = iter + 2; que é o mesmo que ITER+= 2;

O código a seguir lê todos os outros personagens para trás:

vetor vtr = 'a', 'b', 'c', 'd', 'e';
vetor:: reverse_iterator iter = vtr.rBegin ();
para (iter = iter; iterchar ch = *iter;
cout << ch << ";

cout << endl;

A saída é:

E c a

pular 'd' e 'b'.

Looping usando a estatura baseada em range

O range baseado em instrução é uma declaração mais conveniente a ser usada para percorrer uma lista, como um vetor. Não é realmente usado para pular ou loop para trás. A sintaxe é:

para (Init-Statement-Opcional for-wonge-deClaration: for-fotan-inialicializer)

Desta vez, existem duas declarações nos parênteses e não três. A primeira declaração é a declaração de uma variável que mantém o próximo elemento no vetor. Esta variável deve ser do mesmo tipo que o tipo de elementos vetoriais. O segundo argumento após o cólon é o nome do vetor.

O código a seguir mostra como ele pode ser usado:

vetor vtr = 'a', 'b', 'c', 'd', 'e';
para (char ch: vtr)
cout << ch << ";

cout << endl;

A saída é:

A B C D E

Looping usando a função for_each ()

A função for_each () é usada na biblioteca de algoritmo incluída. A sintaxe é:

modelo
Função constExpr for_each (inputIterator primeiro, inputIterator Último, função f);

O primeiro argumento é um iterador que aponta para o primeiro elemento do vetor. O segundo argumento é um iterador que aponta logo após o último elemento do vetor. O terceiro argumento é o nome de uma função, cujo corpo é o que seria no clássico loop for. Esta função possui um parâmetro e é a declaração da variável que manteria o próximo valor do vetor. Tem que ser do mesmo tipo que cada elemento no vetor. Esta função for_each () não é realmente usada para pular ou loop para trás.

O programa a seguir mostra como usar a chamada de função for_each () e uma definição de função associada:

#incluir
#incluir
#incluir
usando namespace std;
void func (char ch)
cout << ch << ";

int main ()

vetor vtr = 'a', 'b', 'c', 'd', 'e';
for_each (vtr.BEGIN (), VTR.end (), func);
cout << endl;
retornar 0;

A saída é:

A B C D E

Conclusão

Para percorrer um vetor, significa acessar todos os elementos do vetor, do início ao final ou do final ao começo. Os elementos podem ser acessados ​​para leitura ou escrita (mudança de valor) ou ambos.

Em C ++, o vetor pode ser loopizado, usando o loop clássico, com o subscrito (índice) nos colchetes; Ele pode ser loopado usando o range baseado em instrução; Ele também pode ser loopado usando a função for_each () incluída na biblioteca de algoritmo.