C++ | Plantillas | Pregunta 10

Salida del siguiente programa.

#include <iostream>
using namespace std;
  
template <class T, int max>
int arrMin(T arr[], int n)
{
   int m = max;
   for (int i = 0; i < n; i++)
      if (arr[i] < m)
         m = arr[i];
  
   return m;
}
  
int main()
{
   int arr1[]  = {10, 20, 15, 12};
   int n1 = sizeof(arr1)/sizeof(arr1[0]);
  
   char arr2[] = {1, 2, 3};
   int n2 = sizeof(arr2)/sizeof(arr2[0]);
  
   cout << arrMin<int, 10000>(arr1, n1) << endl;
   cout << arrMin<char, 256>(arr2, n2);
   return 0;
}

(A) Error del compilador, el argumento de la plantilla debe ser un tipo de datos.
(B)

10
1

(C)

10000
256

(D)

1
1

Respuesta: (B)
Explicación: podemos pasar argumentos que no sean de tipo a las plantillas. Los parámetros que no son de tipo se utilizan principalmente para especificar valores máximos o mínimos o cualquier otro valor constante para una instancia particular de plantilla. Lo importante a tener en cuenta acerca de los parámetros que no son de tipo es que deben ser constantes. El compilador debe conocer el valor de los parámetros que no son de tipo en el momento de la compilación. Porque el compilador necesita crear funciones/clases para un valor que no sea de tipo especificado en el momento de la compilación.

A continuación se muestra otro ejemplo de parámetros que no son de tipo.

#include <iostream>
using namespace std;

template 
 T fun (T arr[], int size)
{
    if (size > N)
      cout << "Not possible";
    T max = arr[0];
   for (int i = 1; i < size; i++)
      if (max < arr[i])
          max = arr[i];
   return max;
}

int main ()
{
    int arr[] = {12, 3, 14};
    cout << fun  (arr, 3);
}

Cuestionario de esta pregunta

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *