Cómo usar plantillas de clase C ++

#include <iostream> 
#include <cstring>
 usando el  espacio de nombres std; 
 
template < class Type>
 class Queue 
{ 
private :
     int front;
    int trasero; 
    Tipo * artículo;
    int longitud; // 有效 长度
    int maxsize; // 最大 长度

public : 
    Queue ( int i) 
    { 
        front = rear = 0 ;
        if (i> 10 ) 
            maxsize= i;
         else 
            maxsize = 10 ; 
        length = 0 ; 
        item = new Type [maxsize];
         if (item == 0 ) 
        { 
            cout << " Error de asignación de espacio " << endl; 
        } 
    }
     ~ Queue () 
    { 
        delete [ ] item; 
    } 
    void Append (Tipo x);   // Agregar elemento 
    void GetHead (Type & x); // Obtener elemento 
    boolAllocation_mem (); // Si no hay suficiente espacio, asigne espacio 
    bool IsFull () // Juzgue que   el equipo está lleno 
    {
         if ((rear + 1 )% maxsize == front)
             return  true ;
         else 
            return  false ; 
    } 
    bool IsEmputy () // Juzgue    el equipo Empty 
    {
         if (rear == front)
             return  true ;
         else 
            return  false ; 
    } 
    int Q_maxsize ()    // Devuelve el número máximo de elementos que se pueden almacenar en la cola 
    {
        return maxsize; 
    } 
    int Q_length ()   // Devuelve el número de elementos válidos en la cola actual 
    {
         return length; 
    } 
}; 
template < class Type>
 void Queue <Type> :: Append (Type x) 
{ 
    if (IsFull ()) 
    { 
        Allocation_mem (); 
    } 
    rear = (rear + 1 )% maxsize; 
    item [rear] = x; 
    length ++ ; 
} 
template < class Type>
 voidQueue <Type> :: GetHead (Type & x) 
{ 
    if (IsEmputy ()) 
    { 
        cout << " 队列 为 空" << endl; 
    } 
    front = (front + 1 )% maxsize; 
    x = elemento [frente]; 
    longitud - ; 
} 
template < class Type>
 bool Queue <Type> :: Allocation_mem () 
{ 
    Type * p, * temp; 
    p = nuevo tipo [maxsize + 10 ];
    si (!p) 
    { 
        cout << " Error al extender el espacio " << endl;
         return  false ; 
    } 
    memmove (p, item, sizeof (Type) * maxsize); 
    temp = item; 
    item = p; 
    delete [] temp; 
    maxsize = maxsize + 10 ;
     return  true ; 
} 

// El procedimiento de prueba es: 
int main () 
{ 
    cout << " Integer Queue 1: " << endl; 
    Queue <int > queue1 ( 8 );
     int input [ 10 ], i, output; 

    for (i = 0 ; i < 10 ; i ++ ) 
    { 
        input [i] = i + 1 ; 
        queue1.Append (input [i]); 
    } 
    cout << "El número máximo de elementos que se permite almacenar en la cola es: " << queue1.Q_maxsize () << endl; 
    cout << "El número de elementos válidos en la cola es: " << queue1.Q_length () << endl ; 
    cout << " Los elementos en la cola son: " ;
    para (i = 0; i < 10 ; i ++ ) 
    { 
        queue1.GetHead (salida); 
        cout << salida << "  " ; 
    } 
    cout << endl; 
    
    cout << " 字符型 队列 2 :" << endl; 
    Queue < char > queue2 ( 26 );
    char  en [ 27 ] = " abcdefghijklmnopqrstuvwxyz " , a;
    int j, k; 

    para (j = 0 ; j < 26 ; j ++ ) 
    {
        queue2.Append ( en [j]); 
    } 
    cout << "El número máximo de elementos que se permite almacenar en la cola es: " << queue2.Q_maxsize () << endl; 
    cout << "El número de elementos válidos en la cola es : " << queue2.Q_length () << endl; 
    cout << " Los elementos en la cola son: " ;
     for (k = 0 ; k < 26 ; k ++ ) 
    { 
        queue2.GetHead (a); 
        cout << a < < "  " ; 
    } 
    cout << endl;
    volver  0; 
}

 

Supongo que te gusta

Origin www.cnblogs.com/lengle452p/p/12722222.html
Recomendado
Clasificación