Resumir elementos vectoriales en C ++

Resumir elementos vectoriales en C ++
La forma obvia de sumar los elementos de un vector es agregarlos uno por uno a partir del primero. De hecho, no hay otra forma, que tiene una ventaja sobre esto, todo es igual. Y así, el clásico bucle de for-loop se puede usar para resumir los elementos de un vector; El estatamiento basado en el rango se puede utilizar para resumir los elementos de un vector; La función for_each () incluida en la biblioteca de algoritmo se puede usar para resumir los elementos de un vector; La función acumulada () incluida en la biblioteca numérica se puede usar para resumir los elementos de un vector.

Con los primeros tres métodos mencionados anteriormente, las declaraciones deben escribirse para hacer la resumen realmente. Con el método de acumulación, la función acumulada () realiza la suma sin declaraciones de suma adicionales. Estos cuatro métodos se ilustran en este artículo. Para codificar un vector en un programa C ++, la biblioteca vectorial se incluye en el programa.

Contenido del artículo

- Agregar elementos vectoriales utilizando el bucle for-loop

- Agregar elementos vectoriales utilizando el estado de rango de rango

- Agregar elementos vectoriales usando la función for_each ()

- Agregar elementos vectoriales utilizando la función Accumulate ()

- Conclusión

Agregar elementos vectoriales utilizando el bucle for-loop

Considere el vector:

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

Para agregar todos estos elementos desde el principio, una variable de suma, inicialmente contiene el valor de cero, debe declararse de la siguiente manera:

Sume flotante = 0.0;

Desde el índice cero hasta el último índice, cada valor se agrega a la suma en un bucle for-bucle. El siguiente programa ilustra esto:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
Sume flotante = 0.0;
para (int i = 0; isum += vtr [i];
cout<< sum <regresar 0;

La salida es 16.5 Como se esperaba. Observe que se incluyó la biblioteca vectorial y se utilizó el espacio de nombres estándar.

Agregar elementos vectoriales utilizando el estado de rango de rango

Considere el siguiente vector de enteros:

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

Para agregar todos estos elementos desde el principio, una variable de suma, inicialmente contiene el valor de cero, debe declararse de la siguiente manera:

int sum = 0;

Desde el primer elemento del vector hasta el último elemento, cada valor se agrega a la suma en el bucle basado en el rango. La declaración de compuesto basada en el rango es similar a la declaración de compuesto anterior anterior. Sin embargo, los parámetros del circuito basado en el rango son diferentes de los del clásico for-loop (arriba).

Hay dos parámetros en las paréntesis del bucle for-bucle basado en el rango: el primero es una declaración variable que se refiere al siguiente elemento en el vector, comenzando desde el primero. Reemplaza a VTR [i], del clásico for-bucle arriba. El segundo parámetro es el nombre del vector. La sintaxis de la declaración de compuesto basada en el rango es

Para la declaración (Declaración de Declaración de Range-Range-Declaration: Init-Estatement-optional

El bucle basado en la gama es una variante del clásico for-loop; es más conveniente de usar en iteración sobre listas. La declaración variable está antes del colon, y el nombre del vector es después del colon. El siguiente programa muestra la declaración de compuesto basada en el rango en acción:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

vectorvtr = 1, 2, 3, 4, 5;
int sum = 0;
para (int var: vtr)
suma += var;
cout<< sum <regresar 0;

La salida es 15. Nota: El nombre de la variable, var, es la elección del programador. En esa posición, se refiere al siguiente elemento (valor) en el vector.

Agregar elementos vectoriales usando la función for_each ()

La función for_each () está en la biblioteca de algoritmo. La sintaxis es:

plantilla
función constexpr for_each (inputiterator primero, inputiterator último, función f);

El primer argumento es un iterador que apunta al inicio (primer elemento) del vector. El segundo argumento es un iterador que apunta al final (justo después del último elemento) del mismo vector. El tercer argumento es solo el nombre de la función que tiene el código para hacer el sumador. Esta función es un objeto de función.

La función for_each () se usa como una llamada de función, que enviará cada elemento del vector, comenzando de primera a otra función, F. La función, F hará todo lo que quiera hacer con el elemento en su cuerpo de función. Cada elemento del vector es un argumento para la función, F. El programador define la función, F y puede darle el nombre que no sea F (). El parámetro de esta función debe ser del tipo de cada uno de los elementos vectoriales (todos los elementos vectoriales son del mismo tipo). El nombre del parámetro es la elección del programador. Entonces, la función for_each () llama a la función, f () para cada elemento vectorial.

El programa para usar la función for_each () debe comenzar de la siguiente manera:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
vector vtr = 1, 2, 3, 4, 5;
int sum = 0;

Se incluyen las bibliotecas de vector y algoritmo. Se declaran el vector inicializado y la suma inicializada de cero. Una buena definición de función de suma para F, que sigue en el programa, puede ser:

void fn (int var)
suma += var;

Cada vez que la función, FN se llama por la función for_each (), el siguiente valor del vector se agrega a la suma. La función principal de C ++ puede ser la siguiente:

int main ()

for_each (VTR.begin (), VTR.end (), fn);
cout << sum << endl;
regresar 0;

La función for_each () se llama una vez desde la biblioteca de algoritmo. Su primer argumento es un iterador que apunta al comienzo del vector; El segundo argumento apunta al final del vector; y el tercer argumento es el nombre del objeto de función, que se llama para cada elemento en el vector. Después de que se haya realizado el número de llamadas, que corresponden al número de elementos vectoriales, la siguiente declaración en la función principal, imprime la suma final.

Agregar elementos vectoriales utilizando la función Accumulate ()

La sintaxis de la función acumulada () de la biblioteca numérica es:

plantilla
Constexpr t acumular (inputiterator primero, inputiterator Last, t init);

Con esta función, no hay necesidad de que el programador escriba código (declaraciones) para sumar. La función acumulada () hace la suma. Su primer argumento es un iterador que señala el comienzo del vector. Su segundo argumento es un iterador, que apunta al final del vector. Su último argumento es el valor de suma inicial. Debería ser cero para un vector de INTS, y 0.0 para un vector de flotadores (o dobles). La función devuelve la suma.

Vector de enteros

El siguiente programa resume todos los elementos de un vector de enteros:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

vectorvtr = 1, 2, 3, 4, 5;
int sum = acumule (VTR.begin (), VTR.end (), 0);
cout<< sum <regresar 0;

La salida es 15; correcto!

Vector de carrozas

El siguiente programa resume todos los elementos de un vector de flotadores:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
flotante suma = acumular (VTR.begin (), VTR.end (), 0.0);
cout<< sum <regresar 0;

La salida es 16.5; correcto!

Problema con la función de acumulación

Si el tercer argumento de la función de acumulación es del tipo incorrecto, entonces la suma estaría incorrecta. Por ejemplo, si los elementos son flotadores, y el tercer argumento es 0 (entero), entonces la suma ignoraría todas las partes decimales de los valores para tener una suma int. El siguiente programa ilustra esto:

#incluir
#incluir
#incluir
usando el espacio de nombres STD;
int main ()

vectorvtr = 1.1, 2.2, 3.3, 4.4, 5.5;
flotante suma = acumular (VTR.begin (), VTR.end (), 0);
cout<< sum <regresar 0;

La salida es 15; equivocado!

Conclusión

El clásico for-loop se puede usar para resumir los elementos de un vector. El estatamiento basado en el rango se puede utilizar para resumir los elementos de un vector. La función for_each () incluida en la biblioteca de algoritmo se puede usar para resumir los elementos de un vector. La función acumulada () incluida en la biblioteca numérica se puede usar para resumir los elementos de un vector. Solo ten cuidado con el uso incorrecto de su tercer argumento.