Video: Cum se poate construi o pâlnie 2024
Șabloanele de structură au multe utilizări interesante, cum ar fi crearea unui depozit de date care nu depinde de un anumit tip. Exemplul StructureTemplate arată o astfel de utilizare.
# include utilizarea namespace std; template struct Volume {T înălțime; T latimea; Lungimea T; Volum () {height = 0; lățimea = 0; lungimea = 0;} T getvolume () {înălțimea de întoarcere * lățimea * lungimea;} T getvolume (T H, T W, T L) {înălțimea = H; lățime = W; lungimea = L; înălțimea de întoarcere * lățime * lungime;}}; int main () {Volumul primul; cout << "primul volum:" << primul. getvolume () << endl; primul. înălțimea = 2; primul. lățimea = 3; primul. lungime = 4; cout << "primul volum:" << primul. getvolume () << endl; Volumul secund; cout << "al doilea volum:" << secundă. getvolume (2, 1, 3, 2, 4, 3) << endl; cout << "înălțime:" << secundă. înălțime << endl; cout << "lățime:" << secundă. latime << endl; cout << "lungime:" << secunde. lungime << endl; return 0;}
În acest caz, structura conține valori, lățime și lungime de date pe care codul le poate utiliza pentru a determina volumul. Structura include un constructor pentru a inițializa valorile, deci chiar dacă cineva cheamă getvolume () fără inițializarea structurii, nu se va întâmpla nimic rău.
Structura permite accesul independent al fiecăreia dintre valorile datelor. Puteți să le setați sau să le obțineți după cum este necesar.
Funcția getvolume () este supraîncărcată. Puteți să o apelați cu sau fără valori de intrare. Codul principal () testează structura în mod temeinic. Iată ce vedeți ca ieșire din acest exemplu:
Primul volum: 0 Primul volum: 24 Volumul al doilea: 28. 896 Înălțime: 2. 1 Lățime: 3. 2 Lungime: 4. 3
un alt scop interesant. Standardul C ++ spune că nu puteți crea un șablon tippedef. De exemplu, următorul cod produce o eroare când încercați să îl compilați:
șablon tippedef map MyDef;
Când încercați să compilați acest cod în Cod:: Blocuri, vedeți următoarea eroare:
eroare: declarația șablonului "typedef"
Cu toate acestea, puteți defini un typedef într-un șablon de structură. Codul de exemplu StructureTemplate2 arată cum.
#include #include folosind namespace std; șablon struct MyDef {tippedef map Type;}; int main () {MyDef:: Căsătoriile de tip; căsătorii ["Tom"] = "Suzy"; căsătorii ["Harry"] = "Harriet"; cout << căsătorii ["Tom"] << endl; cout << căsătorii ["Harry"] << endl; return 0;}
Acest exemplu depășește limitele C ++ prin plasarea lui typedef în structul MyDef. Aceeași structură poate conține orice număr de intrări de tip typedef.
Folosirea unui tippedef în acest mod facilitează lucrul cu harta.Tot ce trebuie să vă faceți griji este tipul de valoare - tipul de cheie este deja definit ca șir.