Como usar modelos de classe C ++

#include <iostream> 
#include <cstring>
 usando o  namespace std; 
 
template < class Type>
 class Queue 
{ 
private :
     int front;
    int rear; 
    Digite * item;
    int length; // 有效长度
    int maxsize; // 最大长度

público : 
    Queue ( int i) 
    { 
        frente = traseira = 0 ;
        se (i> 10 ) 
            tamanho máximo= i;
         else 
            maxsize = 10 ; 
        length = 0 ; 
        item = new Tipo [maxsize];
         if (item == 0 ) 
        { 
            cout << " Falha na alocação de espaço " << endl; 
        } 
    }
     ~ Queue () 
    { 
        delete [ ] item; 
    } 
    void Anexar (Tipo x);   // Anexar elemento 
    void GetHead (Tipo & x); // Buscar elemento 
    boolAllocation_mem (); // Se não houver espaço suficiente, aloque o espaço 
    bool IsFull ()   // Julga que a equipe está cheia 
    {
         if ((rear + 1 )% maxsize == front)
             retorna  true ; caso
         contrário, 
            retorne  false ; 
    } 
    bool IsEmputy ()    // Julga a equipe Vazio 
    {
         if (rear == front)
             retorna  true ; caso
         contrário, 
            retorna  false ; 
    } 
    int Q_maxsize ()    // Retorna o número máximo de elementos que podem ser armazenados na fila 
    {
        return maxsize; 
    } 
    int Q_length ()   // Retorna o número de elementos válidos na fila atual 
    {
         return length; 
    } 
}; 
template < class Type>
 void Queue <Type> :: Append (Type x) 
{ 
    if (IsFull ()) 
    { 
        Allocation_mem (); 
    } 
    traseiro = (traseiro + 1 )% maxsize; 
    item [traseiro] = x; 
    comprimento ++ ; 
} 
modelo < classe Tipo>
 voidFila <Tipo> :: GetHead (Tipo & x) 
{ 
    if (IsEmputy ()) 
    { 
        cout << " 队列 为 空" << endl; 
    } 
    frente = (frente + 1 )% maxsize; 
    x = item [frente]; 
    comprimento - ; 
} 
modelo < tipo de classe >
 bool Queue <Type> :: Allocation_mem () 
{ 
    Type * p, * temp; 
    p = novo tipo [tamanho máximo + 10 ];
    if (!p) 
    { 
        cout << " Falha no espaço estendido " << endl;
         return  false ; 
    } 
    memmove (p, item, sizeof (Type) * tamanho máximo); 
    temp = item; 
    item = p; 
    delete [] temp; 
    maxsize = maxsize + 10 ;
     return  true ; 
} 

// O procedimento de teste é: 
int main () 
{ 
    cout << " Fila de número inteiro 1: " << endl; 
    Fila <int > fila1 ( 8 );
     int input [ 10 ], i, output; 

    for (i = 0 ; i < 10 ; i ++ ) 
    { 
        input [i] = i + 1 ; 
        fila1.Append (input [i]); 
    } 
    cout << "O número máximo de elementos que podem ser armazenados na fila é: " << fila1.Q_maxsize () << endl; 
    cout << "O número de elementos válidos na fila é: " << fila1.Q_length () << endl ; 
    cout << " Os elementos na fila são: " ;
    para (i = 0; i < 10 ; i ++ ) 
    { 
        fila1.GetHead (saída); 
        cout << saída << "  " ; 
    } 
    Cout << endl; 
    
    cout << " 队列 队列 2: " << endl; 
    Fila < char > queue2 ( 26 );
    char  em [ 27 ] = " abcdefghijklmnopqrstuvwxyz " , a;
    int j, k; 

    para (j = 0 ; j < 26 ; j ++ ) 
    {
        queue2.Append ( in [j]); 
    } 
    cout << "O número máximo de elementos que podem ser armazenados na fila é: " << fila2.Q_maxsize () << endl; 
    cout << "O número de elementos válidos na fila é : " << fila2.Q_length () << endl; 
    cout << " Os elementos na fila são: " ;
     para (k = 0 ; k < 26 ; k ++ ) 
    { 
        fila2.GetHead (a); 
        cout << a < < "  " ; 
    } 
    cout << endl;
    retornar  0; 
}

 

Acho que você gosta

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