Este artículo demuestra algunas de las funciones integradas que se pueden usar para consultar y manipular tipos de arrays, incluso una array multidimensional. Estas funciones pueden ser útiles en los casos en que necesitamos información o manipulamos una array que iniciamos con diferentes dimensiones. Estas funciones se definen en el archivo de encabezado. Algunas de las funciones incluyen:
- is_array() : como sugiere el nombre, el único propósito de esta función es verificar si una variable es un tipo de array o no. Notable aquí es que incluso un std::array no se considera un arreglo de acuerdo con esta función. La constante miembro «valor» devuelve verdadero si el tipo es una array; de lo contrario, devuelve falso.
- is_same() : esta función es para verificar las relaciones de tipo y devuelve verdadero si dos tipos tienen exactamente las mismas características. La constante miembro «valor» devuelve verdadero si los tipos son iguales, de lo contrario devuelve falso.
// C++ code to demonstrate the working of
// is_array() and is_same()
#include<type_traits>
#include<iostream>
#include<array>
#include<string>
using
namespace
std;
int
main()
{
// checking which is array using is_array
cout <<
"Is Integer an array? : "
<< is_array<
int
>::value << endl;
cout <<
"Is Array an array? : "
<< is_array<
int
[10]>::value << endl;
cout <<
"Is 2D Array an array? : "
<< is_array<
int
[10][10]>::value << endl;
cout <<
"Is String an array? : "
<< is_array<string>::value << endl;
cout <<
"Is Character Array an array? : "
<< is_array<
char
[10]>::value << endl;
cout <<
"Is Array class type an array? : "
<< is_array<array<
int
,3>>::value << endl;
cout << endl;
// checking for same types using is_same()
cout <<
"Is 2D array same as 1D array? : "
<<
is_same<
int
[10],
int
[10][10]>::value << endl;
cout <<
"Is Character array same as Integer array? : "
<< is_same<
int
[10],
char
[10]>::value << endl;
cout <<
"Is 1D array same as 1D array (Different sizes) ? : "
<< is_same<
int
[10],
int
[20]>::value << endl;
cout <<
"Is 1D array same as 1D array? (Same sizes): "
<< is_same<
int
[10],
int
[10]>::value << endl;
return
0;
}
Producción:
Is Integer an array? : 0 Is Array an array? : 1 Is 2D Array an array? : 1 Is String an array? : 0 Is Character Array an array? : 1 Is Array class type an array? : 0 Is 2D array same as 1D array? : 0 Is Character array same as Integer array? : 0 Is 1D array same as 1D array (Different sizes) ? : 0 Is 1D array same as 1D array? (Same sizes): 1
- rank() : esta es una función de consulta de propiedades que devuelve el rango de la array. Rango significa la dimensión de la array . La constante miembro de valor devuelve el rango del objeto.
// C++ code to demonstrate the working of
// rank()
#include<type_traits> // for array query functions
#include<iostream>
using
namespace
std;
int
main()
{
// checking rank of different types
cout <<
"The rank of integer is : "
<< rank<
int
>::value << endl;
cout <<
"The rank of 1D integer array is : "
<< rank<
int
[10]>::value << endl;
cout <<
"The rank of 2D integer array is : "
<< rank<
int
[20][10]>::value << endl;
cout <<
"The rank of 3D integer array is : "
<< rank<
int
[20][10][40]>::value << endl;
cout <<
"The rank of 1D character array is : "
<< rank<
char
[10]>::value << endl;
cout << endl;
}
Producción:
The rank of integer is : 0 The rank of 1D integer array is : 1 The rank of 2D integer array is : 2 The rank of 3D integer array is : 3 The rank of 1D character array is : 1
- extension() : tanto la extensión como la eliminación de la extensión son alteraciones de tipo compuesto que se pueden aplicar a arrays en C++. Esta función devuelve el tamaño de la dimensión particular de la array. Esta función toma dos argumentos, el tipo de array y la dimensión en cuyo tamaño se debe encontrar. Esto también tiene el valor constante del miembro para el valor de impresión.
- remove_extent() : esta función elimina la primera dimensión desde la izquierda en la array/arreglo declarado.
- remove_all_extents() : esta función elimina todas las dimensiones de la array/array y las convierte en un tipo de datos base.
// C++ code to demonstrate the working of
// extent(), remove_extent(), remove_all_extents()
#include<type_traits> // for array query functions
#include<iostream>
using
namespace
std;
int
main()
{
// Checking extent of different types (using extent)
cout <<
"The extent of 1st dimension of 3D integer array is : "
;
cout << extent<
int
[20][10][40],0>::value << endl;
cout <<
"The extent of 2nd dimension of 3D integer array is : "
;
cout << extent<
int
[20][10][40],1>::value << endl;
cout <<
"The extent of 3rd dimension of 3D integer array is : "
;
cout << extent<
int
[20][10][40],2>::value << endl;
cout <<
"The extent of 4th dimension of 3D integer array is : "
;
cout << extent<
int
[20][10][40],3>::value << endl;
cout << endl;
// Removing extent of types
cout <<
"The rank after removing 1 extent is : "
;
cout << rank<remove_extent<
int
[20][10][30]>::type>::value << endl;
// 1st dimension from left is deleted
cout <<
"The extent of 1st after removing 1 extent is : "
;
cout << extent<remove_extent<
int
[20][10][30]>::type>::value << endl;
cout << endl;
// Removing all extents of types
cout <<
"The rank after removing all extents is : "
;
cout << rank<remove_all_extents<
int
[20][10][30]>::type>::value << endl;
// All extents are deleted
cout <<
"The extent of 1st after removing all extents is : "
;
cout << extent<remove_all_extents<
int
[20][10][30]>::type>::value << endl;
cout << endl;
}
Producción:
The extent of 1st dimension of 3D integer array is : 20 The extent of 2nd dimension of 3D integer array is : 10 The extent of 3rd dimension of 3D integer array is : 40 The extent of 4th dimension of 3D integer array is : 0 The rank after removing 1 extent is : 2 The extent of 1st after removing 1 extent is : 10 The rank after removing all extents is : 0 The extent of 1st after removing all extents is : 0
Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo y enviarlo por correo electrónico a contribuya@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