ključna beseda typedef v C++ se uporablja za vzdevek obstoječih tipov podatkov, uporabniško definiranih tipov podatkov in kazalcev na bolj smiselno ime. Typedefs vam omogočajo, da podate opisna imena standardnim tipom podatkov, kar vam lahko pomaga tudi pri samodokumentiranju kode. Večinoma se typedef-i uporabljajo za vzdevke, le če je vnaprej določeno ime predolgo ali zapleteno, da bi ga znova in znova zapisovali. Nepotrebna uporaba typedef na splošno ni dobra praksa.
Sintaksa:
ni enako mysql
typedef>
primer:
typedef std::vector vInt;>
Spodaj je program C++ za implementacijo 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;> }> |
>
>Izhod
190 180 10 10 27>
Uporaba typedef v C++
- typedef v C++ se lahko uporablja za vzdevek vnaprej določenih tipov podatkov z dolgimi imeni.
- Uporablja se lahko s podatkovnimi strukturami STL, kot je Vektorji, nizi, zemljevidi itd.
- typedef se lahko uporablja tudi z nizi.
- Typedef lahko uporabimo z običajni kazalci tako dobro, kot funkcijski kazalci .
Uporaba typedef z vnaprej določenimi tipi podatkov
Typedef se lahko uporablja za vzdevek vnaprej določenim tipom podatkov, kot je int, char, float, in njihove izpeljanke dolgo, kratko, podpisano, in nepodpisan. Novi vzdevek se lahko nato uporabi za ustvarjanje novih spremenljivk ustreznega tipa.
Sintaksa:
typedef>
primer:
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;> }> |
>
>Izhod
1232133>
Uporaba typedef s podatkovnimi strukturami STL
typedef se lahko uporablja tudi z podatkovne strukture STL, kot Vektorji, nizi, zemljevidi itd. Če smo eni tistih, ki ne želijo uvoziti celotnega imenski prostor std v naši kodi, potem moramo znova in znova pisati std::vector, std::string itd. Tako je uporaba typedef v tem primeru lahko hiter način, da to preprečimo in ohranimo našo kodo čisto in berljivo.
Sintaksa:
typedef>
primer:
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; }> |
>
>Izhod
1 2 3 6 2 1>
Uporaba typedef z nizi
typedef lahko uporabite z nizi za ustvarjanje novejših nizov (tako kot jih uporabljate s podatkovnimi strukturami STL). Z lahkoto lahko naredimo nove nize ali naredimo nize nizov z uporabo typedef z nizi, pri tem pa ohranimo našo kodo berljivo, nemoteno.
Sintaksa:
typedef [ ]>
Po tem < vzdevek_ime> zdaj lahko uporabite za ustvarjanje nizov tipa < data_type> in velikost .
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;> }> |
>
>
ymailIzhod
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Uporaba typedef s kazalci
Typedef se lahko uporablja tudi s kazalci. Za hitrejše ustvarjanje kazalcev in ohranjanje berljivosti kode. Uporabljamo jih lahko tako s podatkovnimi kazalci kot s funkcijskimi kazalci.
(i) Uporaba s podatkovnimi kazalci:
Spodaj je sintaksa, primer in izvorna koda za uporabo typedef s podatkovnimi kazalci
Sintaksa:
typedef *>
primer:
typedef int* iPtr; iPtr pointer1, pointer2;>
Spodaj je program za uporabo typedef s podatkovnimi kazalci.
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;> }> |
>
>Izhod
a is: 10 b is: 20>
( ii ) Uporaba s kazalci funkcij:
Spodaj je sintaksa, primer in koda za prikaz uporabe typedef s kazalci funkcij.
Sintaksa:
typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, .... );>
primer:
typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>
Tukaj lahko fun ptr zdaj uporabite za ustvarjanje več funkcijskih kazalcev. To bo bolj jasno v spodnji kodi.
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;> }> |
>
>Izhod
8 6>
Tu je func_ptr1 običajen kazalec funkcije, medtem ko je func_ptr2 kazalec funkcije typedef in ga je mogoče uporabiti za ustvarjanje več kazalcev funkcij, ki kot argumenta sprejmeta 2 celi števili in s povratnim tipom int.
Opomba: func_ptr2 ni več mogoče uporabljati kot neodvisen funkcijski kazalec in se lahko uporablja samo za ustvarjanje novih funkcijskih kazalcev, ki lahko kažejo samo na funkcijo, ki vrne int in vzame dva tipa int kot svoja parametra.