Video: Programmazione in C : le basi per creare programmi 2024
I modelli di struttura hanno molti usi interessanti, come la creazione di un repository di dati che non dipende da un particolare tipo. L'esempio di StructureTemplate qui ne mostra uno.
# include usando lo spazio dei nomi std; template struct Volume {T height; T larghezza; Lunghezza T; Volume () {altezza = 0; larghezza = 0; length = 0;} T getvolume () {return height * width * length;} T getvolume (T H, T W, T L) {height = H; larghezza = W; lunghezza = L; altezza di ritorno * larghezza * lunghezza;}}; int main () {Volume first; cout << "primo volume:" << primo. getvolume () << endl; primo. altezza = 2; primo. larghezza = 3; primo. lunghezza = 4; cout << "primo volume:" << primo. getvolume () << endl; Volume secondo; cout << "secondo volume:" << secondo. getvolume (2, 1, 3. 2, 4. 3) << endl; cout << "height:" << secondo. altezza << endl; cout << "width:" << secondo. larghezza << endl; cout << "lunghezza:" << secondo. lunghezza << endl; return 0;}
In questo caso, la struttura contiene valori di dati di altezza, larghezza e lunghezza che il codice può utilizzare per determinare il volume. La struttura include un costruttore per inizializzare i valori, quindi anche se qualcuno chiama getvolume () senza inizializzare la struttura, non accadrà nulla di male.
La struttura consente l'accesso indipendente a ciascuno dei valori dei dati. È possibile impostare o ottenere come necessario.
La funzione getvolume () è sovraccaricata. Puoi chiamarlo con o senza valori di input. Il codice in main () verifica a fondo la struttura. Ecco cosa vedi come output di questo esempio:
Primo volume: 0 Primo volume: 24 Secondo volume: 28. 896 Altezza: 2. 1 Larghezza: 3. 2 Lunghezza: 4. 3
Puoi usare le strutture per un altro scopo interessante. Lo standard C ++ dice che non è possibile creare un modello typedef. Ad esempio, il seguente codice genera un errore quando si tenta di compilarlo:
template typedef map MyDef;
Quando si tenta di compilare questo codice in Codice:: Blocchi, viene visualizzato il seguente errore:
errore: dichiarazione modello di 'typedef'
Tuttavia, è possibile definire un typedef all'interno di un modello di struttura. Il codice di esempio StructureTemplate2 qui mostra come.
#include #include using namespace std; template struct MyDef {typedef map Type;}; int main () {MyDef:: tipo matrimoni; matrimoni ["Tom"] = "Suzy"; matrimoni ["Harry"] = "Harriet"; cout << matrimoni ["Tom"] << endl; cout << matrimoni ["Harry"] << endl; return 0;}
Questo esempio supera le limitazioni del C ++ posizionando il typedef all'interno della struct, MyDef. La stessa struttura può contenere un numero qualsiasi di voci typedef.
L'uso di un typedef in questo modo facilita il lavoro con la mappa.Tutto ciò di cui devi preoccuparti è il tipo di valore: il tipo di chiave è già definito come stringa.