logo

typedef en C++

La paraula clau typedef en C++ s'utilitza per alias tipus de dades existents, tipus de dades definides per l'usuari i punters a un nom més significatiu. Els tipusdefs us permeten donar noms descriptius als tipus de dades estàndard, que també us poden ajudar a documentar el vostre codi. La majoria de les definicions de tipus s'utilitzen per a l'àlies, només si el nom predefinit és massa llarg o complex per escriure una i altra vegada. L'ús innecessari de typedef generalment no és una bona pràctica.

Sintaxi:



com desactivar el mode de desenvolupador
typedef>

Exemple:

typedef std::vector vInt;>

A continuació es mostra el programa C++ per implementar 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;> }>

>

>

Sortida

190 180 10 10 27>

Aplicacions de typedef en C++

  • typedef en C++ es pot utilitzar per alias tipus de dades predefinits amb noms llargs.
  • Es pot utilitzar amb estructures de dades STL com Vectors, cadenes, mapes, etc.
  • typedef també es pot utilitzar amb matrius.
  • Podem utilitzar typedef amb punters normals així com punters de funció .

Utilitzant typedef amb tipus de dades predefinits

Typedef es pot utilitzar per alias tipus de dades predefinits com int, char, float, i els seus derivats com llarg, curt, signat, i sense signar. El nou àlies es pot utilitzar per fer noves variables dels tipus respectius.

Sintaxi:

typedef>

Exemple:

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;> }>

>

>

Sortida

1232133>

Ús de typedef amb estructures de dades STL

typedef també es pot utilitzar amb Estructures de dades STL, M'agrada Vectors, cadenes, mapes, etc. Si som d'aquells, que no volem importar la totalitat espai de noms std al nostre codi, llavors hem d'escriure std::vector, std::string, etc, una i altra vegada. Així, utilitzar typedef, en aquest cas, pot ser una manera ràpida d'evitar-ho i mantenir el nostre codi net i llegible.

Sintaxi:

typedef>

Exemple:

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;> >// vec1 is a vectorof type int> >vInt vec1{ 1, 2, 3, 6, 2, 1 };> > >// Outputting the vector> >for> (>int> i = 0; i std::cout << vec1[i] <<' '; } return 0; }>

>

>

Sortida

1 2 3 6 2 1>

Utilitzant typedef amb matrius

typedef es pot utilitzar amb matrius per fer matrius més noves (igual que utilitzar-les amb estructures de dades STL). Podem crear matrius noves o fer matrius de matrius fàcilment utilitzant typedef amb matrius, tot mantenint el nostre codi llegible, sense problemes.

Sintaxi:

typedef [ ]>

Després d'això < nom_àlies> ara es pot utilitzar per crear matrius de tipus < tipus_dada> i mida .

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;> }>

>

>

Sortida

Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>

Utilitzant typedef amb punters

Typedef també es pot utilitzar amb punters. Per a una creació més ràpida de punters i també per mantenir el codi llegible. Els podem utilitzar tant amb punters de dades com amb punters de funció.

(i) Ús amb punters de dades:

A continuació es mostra la sintaxi, l'exemple i el codi font per utilitzar typedef amb punters de dades

Sintaxi:

typedef *>

Exemple:

typedef int* iPtr; iPtr pointer1, pointer2;>

A continuació es mostra el programa per utilitzar typedef amb punters de dades.

C++




ordenar matriu java

// 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;> }>

>

>

Sortida

a is: 10 b is: 20>

(ii) Ús amb punters de funció:

A continuació es mostra la sintaxi, l'exemple i el codi per mostrar l'ús de typedef amb punters de funció.

Sintaxi:

typedef < return_type>( *< alias_name>)(< parameter_type>,< parameter_type>, .... );>

Exemple:

typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>

Aquí, ara es pot utilitzar ptr divertit per crear més punters de funció. Això quedarà més clar al codi següent.

C++




#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;> }>

>

>

Sortida

8 6>

Aquí, func_ptr1 és un punter de funció normal, mentre que func_ptr2 és un punter de funció typedef i es pot utilitzar per crear més punters de funció prenent 2 enters com a arguments i amb el tipus de retorn int.

Nota: func_ptr2 ja no es pot utilitzar com a punter de funció independent i només es pot utilitzar per crear nous punters de funció que només poden apuntar a la funció que retorna int i prenen dos tipus int com a paràmetres.