Summing Vector Elements in C ++

Summing Vector Elements in C ++
A maneira óbvia de somar os elementos de um vetor é adicioná-los um a um começo do primeiro. De fato, não há outra maneira, que tem uma vantagem sobre isso, tudo sendo igual. E assim o loop clássico pode ser usado para resumir os elementos de um vetor; O range baseado em instrução pode ser usado para resumir os elementos de um vetor; A função for_each () incluída na biblioteca de algoritmo pode ser usada para resumir os elementos de um vetor; A função accumulate () incluída na biblioteca numérica pode ser usada para resumir os elementos de um vetor.

Com os três primeiros métodos mencionados acima, as declarações devem ser escritas para realmente fazer o resumo. Com o método acumulado, a função accumulate () faz a soma sem declarações adicionais de soma. Esses quatro métodos são ilustrados neste artigo. Para codificar um vetor em um programa C ++, a biblioteca vetorial é incluída no programa.

Conteúdo do artigo

- Adicionando elementos vetoriais usando o loop for

- Adicionando elementos vetoriais usando a estatura baseada em gama

- Adicionando elementos vetoriais usando a função for_each ()

- Adicionando elementos vetoriais usando a função accumulate ()

- Conclusão

Adicionando elementos vetoriais usando o loop for

Considere o vetor:

vetor vtr = 1.1, 2.2, 3.3, 4.4, 5.5;

Para adicionar todos esses elementos desde o início, uma variável soma, mantendo inicialmente o valor de zero, deve ser declarada da seguinte maneira:

soma flutuante = 0.0;

Do índice zero ao último índice, cada valor é adicionado à soma em um loop for. O programa a seguir ilustra o seguinte:

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

Vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
soma flutuante = 0.0;
para (int i = 0; isoma += vtr [i];
cout<< sum <retornar 0;

A saída é 16.5 como esperado. Observe que a biblioteca vetorial foi incluída e o espaço para nome padrão foi usado.

Adicionando elementos vetoriais usando a estatura baseada em gama

Considere o seguinte vetor de números inteiros:

vetor vtr = 1, 2, 3, 4, 5;

Para adicionar todos esses elementos desde o início, uma variável soma, mantendo inicialmente o valor de zero, deve ser declarada da seguinte maneira:

int sum = 0;

Desde o primeiro elemento do vetor até o último elemento, cada valor é agregado à soma no loop for-for-loop baseado em range. A declaração para o composto baseada em gama é semelhante à declaração para o composto acima. No entanto, os parâmetros do loop for do range são diferentes dos do loop clássico (acima).

Existem dois parâmetros nos parênteses do loop for-alcão: o primeiro é uma declaração variável que se refere ao próximo elemento no vetor, começando a partir do primeiro. Ele substitui Vtr [i], do clássico loop acima. O segundo parâmetro é o nome do vetor. A sintaxe da declaração baseada em intervalo, é

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

O loop for-loop baseado em gama é uma variante do loop clássico; É mais conveniente usar na iteração por listas. A declaração variável está diante do cólon, e o nome do vetor está atrás do cólon. O programa a seguir mostra a instrução FOR-Composto baseada em range em ação:

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

vetorvtr = 1, 2, 3, 4, 5;
int sum = 0;
para (int var: vtr)
soma += var;
cout<< sum <retornar 0;

A saída é 15. Nota: O nome da variável, var, é a escolha do programador. Nessa posição, refere -se ao próximo elemento (valor) no vetor.

Adicionando elementos vetoriais usando a função for_each ()

A função for_each () está na biblioteca de algoritmo. A sintaxe é:

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

O primeiro argumento é um iterador que aponta para o início (primeiro elemento) do vetor. O segundo argumento é um iterador que aponta para o fim (logo após o último elemento) do mesmo vetor. O terceiro argumento é apenas o nome da função que tem o código para fazer o resumo. Esta função é um objeto de função.

A função for_each () é usada como uma chamada de função, que enviará cada elemento do vetor, começando da primeira para outra função, f. A função, f fará o que quiser com o elemento em seu corpo de função. Cada elemento do vetor é um argumento para a função, f. O programador define a função, f e pode dar o nome que não seja f (). O parâmetro desta função deve ser do tipo de cada um dos elementos vetoriais (todos os elementos vetoriais são do mesmo tipo). O nome do parâmetro é a escolha do programador. Portanto, a função for_each () chama a função, f () para cada elemento vetorial.

O programa para usar a função for_each () deve começar da seguinte forma:

#incluir
#incluir
#incluir
usando namespace std;
vetor vtr = 1, 2, 3, 4, 5;
int sum = 0;

As bibliotecas de vetor e algoritmo estão incluídas. O vetor inicializado e a soma inicializada de zero são declarados. Uma boa definição de função de soma para F, que se segue no programa, pode ser:

void fn (int var)
soma += var;

Cada vez que a função, FN é chamada pela função for_each (), o próximo valor do vetor é adicionado à soma. A função principal do C ++ pode ser a seguinte:

int main ()

for_each (vtr.BEGIN (), VTR.end (), fn);
cout << sum << endl;
retornar 0;

A função for_each () é chamada uma vez da biblioteca de algoritmo. Seu primeiro argumento é um iterador que aponta para o início do vetor; O segundo argumento aponta para o final do vetor; e o terceiro argumento é o nome do objeto de função, que é chamado para cada elemento no vetor. Após o número de chamadas, que correspondem ao número de elementos vetoriais, foram feitos, a próxima declaração na função principal, imprime a soma final.

Adicionando elementos vetoriais usando a função accumulate ()

A sintaxe da função accumulate () da biblioteca numérica é:

modelo
constexpr t acumular (inputIterator primeiro, inputIterator por último, t init);

Com esta função, não há necessidade de o programador escrever código (declarações) para soma. A função accumulate () faz a soma. Seu primeiro argumento é um iterador apontando para o início do vetor. Seu segundo argumento é um iterador, apontando para o fim do vetor. Seu último argumento é o valor da soma inicial. Deve ser zero para um vetor de ints e 0.0 para um vetor de carros alegóricos (ou duplas). A função retorna a soma.

Vetor de números inteiros

O programa a seguir resume todos os elementos de um vetor de números inteiros:

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

vetorvtr = 1, 2, 3, 4, 5;
int sum = acumulado (VTR.BEGIN (), VTR.end (), 0);
cout<< sum <retornar 0;

A saída é 15; correto!

Vetor de carros alegóricos

O programa a seguir resume todos os elementos de um vetor de carros alegóricos:

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

Vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
soma flutuante = acumulado (VTR.BEGIN (), VTR.end (), 0.0);
cout<< sum <retornar 0;

A saída é 16.5; correto!

Problema com a função acumulada

Se o terceiro argumento da função acumulado for o tipo errado, então a soma estaria errada. Por exemplo, se os elementos forem carros alegóricos e o terceiro argumento é 0 (número inteiro), então a soma ignoraria todas as partes decimais dos valores para ter uma soma int. O programa a seguir ilustra o seguinte:

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

Vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
soma flutuante = acumulado (VTR.BEGIN (), VTR.end (), 0);
cout<< sum <retornar 0;

A saída é 15; errado!

Conclusão

O loop clássico pode ser usado para resumir os elementos de um vetor. O range baseado em instrução pode ser usado para resumir os elementos de um vetor. A função for_each () incluída na biblioteca de algoritmo pode ser usada para resumir os elementos de um vetor. A função accumulate () incluída na biblioteca numérica pode ser usada para resumir os elementos de um vetor. Cuidado com o uso incorreto de seu terceiro argumento.