C++ 98 introdujo un contenedor especial llamado valarray para contener y proporcionar operaciones matemáticas en arrays de manera eficiente.
- Admite operaciones matemáticas por elementos y varias formas de operadores de subíndices generalizados, corte y acceso indirecto.
- En comparación con los vectores, los valarrays también son más eficientes en ciertas operaciones matemáticas que los vectores.
Funciones miembro públicas en la clase valarray: 1. apply() : – Esta función aplica la manipulación dada en sus argumentos a todos los elementos valarray a la vez y devuelve un nuevo valarray con valores manipulados. 2. sum() : – Esta función devuelve la suma de todos los elementos de valarrays a la vez.
CPP
// C++ code to demonstrate the working of // apply() and sum() #include<iostream> #include<valarray> // for valarray functions using namespace std; int main() { // Initializing valarray valarray<int> varr = { 10, 2, 20, 1, 30 }; // Declaring new valarray valarray<int> varr1 ; // Using apply() to increment all elements by 5 varr1 = varr.apply([](int x){return x=x+5;}); // Displaying new elements value cout << "The new valarray with manipulated values is : "; for (int &x: varr1) cout << x << " "; cout << endl; // Displaying sum of both old and new valarray cout << "The sum of old valarray is : "; cout << varr.sum() << endl; cout << "The sum of new valarray is : "; cout << varr1.sum() << endl; return 0; }
Producción:
The new valarray with manipulated values is : 15 7 25 6 35 The sum of old valarray is : 63 The sum of new valarray is : 88
3. min() :- Esta función devuelve el elemento más pequeño de valarray. 4. max() :- Esta función devuelve el elemento más grande de valarray.
CPP
// C++ code to demonstrate the working of // max() and min() #include<iostream> #include<valarray> // for valarray functions using namespace std; int main() { // Initializing valarray valarray<int> varr = { 10, 2, 20, 1, 30 }; // Displaying largest element of valarray cout << "The largest element of valarray is : "; cout << varr.max() << endl; // Displaying smallest element of valarray cout << "The smallest element of valarray is : "; cout << varr.min() << endl; return 0; }
Producción:
The largest element of valarray is : 30 The smallest element of valarray is : 1
5. shift() :- Esta función devuelve el nuevo valarray después de cambiar los elementos por el número mencionado en su argumento. Si el número es positivo , se aplica el desplazamiento a la izquierda , si el número es negativo , se aplica el desplazamiento a la derecha . 6. cshift() : – Esta función devuelve el nuevo valarray después de cambiar circularmente (rotar) los elementos por el número mencionado en su argumento. Si el número es positivo, se aplica un desplazamiento circular a la izquierda , si el número es negativo, se aplica un desplazamiento circular a la derecha.
CPP
// C++ code to demonstrate the working of // shift() and cshift() #include<iostream> #include<valarray> // for valarray functions using namespace std; int main() { // Initializing valarray valarray<int> varr = { 10, 2, 20, 1, 30 }; // Declaring new valarray valarray<int> varr1; // using shift() to shift elements to left // shifts valarray by 2 position varr1 = varr.shift(2); // Displaying elements of valarray after shifting cout << "The new valarray after shifting is : "; for ( int&x : varr1) cout << x << " "; cout << endl; // using cshift() to circularly shift elements to right // rotates valarray by 3 position varr1 = varr.cshift(-3); // Displaying elements of valarray after circular shifting cout << "The new valarray after circular shifting is : "; for ( int&x : varr1) cout << x << " "; cout << endl; return 0; }
Producción:
The new valarray after shifting is : 20 1 30 0 0 The new valarray after circular shifting is : 20 1 30 10 2
7. swap() : – Esta función intercambia un valarray con otro.
CPP
// C++ code to demonstrate the working of // swap() #include<iostream> #include<valarray> // for valarray functions using namespace std; int main() { // Initializing 1st valarray valarray<int> varr1 = {1, 2, 3, 4}; // Initializing 2nd valarray valarray<int> varr2 = {2, 4, 6, 8}; // Displaying valarrays before swapping cout << "The contents of 1st valarray " "before swapping are : "; for (int &x : varr1) cout << x << " "; cout << endl; cout << "The contents of 2nd valarray " "before swapping are : "; for (int &x : varr2) cout << x << " "; cout << endl; // Use of swap() to swap the valarrays varr1.swap(varr2); // Displaying valarrays after swapping cout << "The contents of 1st valarray " "after swapping are : "; for (int &x : varr1) cout << x << " "; cout << endl; cout << "The contents of 2nd valarray " "after swapping are : "; for (int &x : varr2) cout << x << " "; cout << endl; return 0; }
Producción:
The contents of 1st valarray before swapping are : 1 2 3 4 The contents of 2nd valarray before swapping are : 2 4 6 8 The contents of 1st valarray after swapping are : 2 4 6 8 The contents of 2nd valarray after swapping are : 1 2 3 4
Este artículo es una contribución de Manjeet Singh . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA