Cuvântul cheie typedef în C++ este folosit pentru aliasarea tipurilor de date existente, a tipurilor de date definite de utilizator și a indicatorilor către un nume mai semnificativ. Typedef-urile vă permit să dați nume descriptive tipurilor de date standard, care vă pot ajuta, de asemenea, să vă documentați codul. În cea mai mare parte, definițiile de tip sunt folosite pentru alias, numai dacă numele predefinit este prea lung sau complex pentru a fi scris din nou și din nou. Utilizarea inutilă a typedef nu este, în general, o practică bună.
Sintaxă:
sql server pivot
typedef>
Exemplu:
typedef std::vector vInt;>
Mai jos este programul C++ pentru implementarea typedef
C++
// C++ Program to implement typedef> #include> > using> namespace> std;> > int> main()> {> > // Now we can make more vectors by using vInt> > typedef> std::vector<> int> >vInt;>>> // vec1 is a vectorof type int> > vInt v;> > > v.push_back(190);> > v.push_back(180);> > v.push_back(10);> > v.push_back(10);> > v.push_back(27);> > > for> (> auto> X : v) {> > cout << X <<> ' '> ;> > }> > > return> 0;> }> |
>
>Ieșire
190 180 10 10 27>
Aplicații ale typedef în C++
- typedef în C++ poate fi folosit pentru aliasarea tipurilor de date predefinite cu nume lungi.
- Poate fi folosit cu structuri de date STL, cum ar fi Vectori, șiruri, hărți etc.
- typedef poate fi folosit și cu matrice.
- Putem folosi typedef cu indicatoare normale precum și indicatori de funcție .
Utilizarea typedef cu tipuri de date predefinite
Typedef poate fi folosit pentru aliasarea unor tipuri de date predefinite, cum ar fi int, char, float, iar derivatele lor ca lung, scurt, semnat, și nesemnat. Noul alias poate fi apoi folosit pentru a crea variabile noi de tipurile respective.
Sintaxă:
typedef>
Exemplu:
C++
// C++ for using typedef with predefined data types> #include> > using> namespace> std;> > int> main()> {> > // ulli can now be used for making more> > // unsigned long long int type variables> > typedef> unsigned> long> long> int> ulli;> > // ulli used to make variables> > ulli a{ 1232133 };> > cout << a;> > return> 0;> }> |
>
>Ieșire
1232133>
Utilizarea typedef cu structuri de date STL
typedef poate fi folosit și cu Structuri de date STL, ca Vectori, șiruri, hărți etc. Dacă suntem unul dintre cei care nu vor să importe întregul spațiu de nume std în codul nostru, atunci trebuie să scriem std::vector, std::string etc, din nou și din nou. Astfel, folosirea typedef, în acest caz, poate fi o modalitate rapidă de a preveni acest lucru și de a menține codul curat și lizibil.
Sintaxă:
typedef>
Exemplu:
C++
// C++ Program to display usage for typedef with vectors> #include> #include> > int> main()> {> > // Now we can make more vectors by using vInt> > typedef> std::vector<> int> >vInt;>>> > vInt vec1{ 1, 2, 3, 6, 2, 1 };> > > // Outputting the vector> > for> (> int> i = 0; i std::cout << vec1[i] <<' '; } return 0; }> |
>
>Ieșire
1 2 3 6 2 1>
Folosind typedef cu matrice
typedef poate fi folosit cu matrice pentru a face matrice mai noi (la fel cum le folosiți cu structuri de date STL). Putem face cu ușurință noi matrice sau matrice de matrice folosind typedef cu matrice, păstrând în același timp codul lizibil, fără probleme.
Sintaxă:
typedef [ ]>
După aceasta < alias_name> poate fi folosit acum pentru a crea tablouri de tip- < tip_date> și dimensiune .
C++
// C++ program to show use of typedef with arrays> #include> using> namespace> std;> > int> main()> {> > > typedef> int> arr[3];> > > // Making new 1D array> > > arr array1{ 1 , 1, 1};> > > > cout <<> 'Array output: '> > <<> '
'> ;> > for> (> int> i = 0; i <3; i++) {> > cout << array1[i] <<> ' '> ;> > }> > cout <<> '
'> ;> > > // Making new 2D array> > // Matrix is an array of arrays with size> > // ( 3 X 3 )> > arr matrix[3];> > > cout <<> 'Matrix output: '> > <<> '
'> ;> > > for> (> int> i = 0; i <3; i++) {> > for> (> int> j = 0; j <3; j++) {> > // Initializing the matrix> > matrix[i][j] = i * j;> > }> > }> > > // Outputting the matrix> > > for> (> int> i = 0; i <3; i++) {> > for> (> int> j = 0; j <3; j++) {> > cout << matrix[i][j] <<> ' '> ;> > }> > cout <<> '
'> ;> > }> > > return> 0;> }> |
>
>Ieșire
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Folosind typedef cu pointeri
Typedef poate fi folosit și cu pointeri. Pentru crearea mai rapidă de pointeri și pentru a menține codul lizibil. Le putem folosi atât cu indicatori de date, cât și cu indicatori de funcție.
(i) Utilizare cu pointeri de date:
Mai jos este sintaxa, exemplul și codul sursă pentru utilizarea typedef cu indicatorii de date
Sintaxă:
typedef *>
Exemplu:
typedef int* iPtr; iPtr pointer1, pointer2;>
Mai jos este programul pentru a utiliza typedef cu indicatori de date.
C++
// C++ Program to showcase the use of typedef> // with data pointer> > #include> using> namespace> std;> > int> main()> {> > int> a = 10;> > int> b = 20;> > // iPtr can now be used to create new pointers of type> > // int> > typedef> int> * iPtr;> > > iPtr pointer_to_a = &a;> > iPtr pointer_to_b = &b;> > > cout <<> 'a is: '> << *pointer_to_a <<> '
'> ;> > cout <<> 'b is: '> << *pointer_to_b <<> '
'> ;> > > return> 0;> }> |
>
>Ieșire
a is: 10 b is: 20>
( ii ) Utilizare cu indicatori de funcție:
Mai jos este sintaxa, exemplul și codul pentru a afișa utilizarea typedef cu indicatorii de funcție.
Sintaxă:
typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, .... );>
Exemplu:
typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>
Aici, fun ptr poate fi folosit acum pentru a crea mai multe indicatori de funcție. Acest lucru va fi mai clar în codul de mai jos.
C++
xor în java
#include> > // Normal pointer to a function> int> (*func_ptr1)(> int> ,> int> );> > // Using typedef with pointer to a function> typedef> int> (*func_ptr2)(> int> ,> int> );> > // Function to multiply two numbers> int> product(> int> u,> int> v) {> return> u * v; }> > int> main(> void> )> {> > func_ptr1 = &product;> > > // Using typedefed function pointer for creating new> > // function pointer 'new_func'> > func_ptr2 new_func_ptr = &product;> > > // Using normal pointer to a function> > int> x2 = (*func_ptr1)(3, 2);> > > // Using the new function pointer> > int> x1 = (*new_func_ptr)(2, 4);> > > std::cout << x1 << std::endl;> > std::cout << x2 << std::endl;> }> |
>
>Ieșire
8 6>
Aici, func_ptr1 este un pointer de funcție normală, în timp ce func_ptr2 este un pointer de funcție typedef și poate fi folosit pentru a crea mai multe pointeri de funcție luând 2 numere întregi ca argumente și cu tipul returnat int.
Notă: func_ptr2 nu mai poate fi folosit ca indicator de funcție independent și poate fi folosit doar pentru a crea indicatori de funcție noi care pot indica doar funcția returnând int și iau două tipuri int ca parametri.