Kľúčové slovo typedef v C++ sa používa na vytváranie aliasov existujúcich dátových typov, užívateľom definovaných dátových typov a ukazovateľov na zmysluplnejší názov. Typedefs vám umožňujú dávať popisné názvy štandardným dátovým typom, čo vám tiež môže pomôcť pri samodokumentovaní vášho kódu. Na aliasing sa väčšinou používajú typové definície, iba ak je preddefinovaný názov príliš dlhý alebo zložitý na to, aby sa dal písať znova a znova. Zbytočné používanie typedef vo všeobecnosti nie je dobrým zvykom.
Syntax:
staviteľ strún
typedef>
Príklad:
typedef std::vector vInt;>
Nižšie je uvedený program C++ na implementáciu 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;> }> |
>
>Výkon
190 180 10 10 27>
Aplikácie typedef v C++
- typedef v C++ možno použiť na alias preddefinovaných dátových typov s dlhými názvami.
- Dá sa použiť s dátovými štruktúrami STL, napr vektory, reťazce, mapy atď.
- typedef možno použiť aj s poliami.
- Môžeme použiť typedef s normálne ukazovatele ako aj ukazovatele funkcií .
Použitie typedef s preddefinovanými typmi údajov
Typedef možno použiť na vytváranie aliasov preddefinovaných dátových typov, napr int, char, float, a ich deriváty ako dlhý, krátky, podpísaný, a nepodpísané. Nový alias sa potom môže použiť na vytváranie nových premenných príslušných typov.
Syntax:
typedef>
Príklad:
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;> }> |
>
>Výkon
1232133>
Použitie typedef s dátovými štruktúrami STL
typedef možno použiť aj s STL dátové štruktúry, Páči sa mi to vektory, reťazce, mapy atď. Ak sme jedným z tých, ktorí nechcú dovážať celé std menný priestor v našom kóde potom musíme znova a znova napísať std::vector, std::string atď. Použitie typedef môže byť v tomto prípade rýchlym spôsobom, ako tomu zabrániť a udržať náš kód čistý a čitateľný.
Syntax:
typedef>
Príklad:
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; }> |
>
>Výkon
1 2 3 6 2 1>
Použitie typedef s poľami
typedef možno použiť s poliami na vytváranie novších polí (rovnako ako ich použitie s dátovými štruktúrami STL). Môžeme ľahko vytvárať nové polia alebo vytvárať polia polí pomocou typedef s poliami, pričom náš kód zachováme bez problémov čitateľný.
Syntax:
typedef [ ]>
Po tomto < alias_name> možno teraz použiť na vytváranie polí typu- < typ_údajov> a veľkosť .
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;> }> |
ako získať prístup k icloud fotografiám
>
>Výkon
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Použitie typedef s ukazovateľmi
Typedef možno použiť aj s ukazovateľmi. Pre rýchlejšie vytváranie ukazovateľov a udržanie čitateľnosti kódu. Môžeme ich použiť s ukazovateľmi údajov, ako aj ukazovateľmi funkcií.
(i) Použitie s dátovými ukazovateľmi:
Nižšie je uvedená syntax, príklad a zdrojový kód pre použitie typedef s dátovými ukazovateľmi
Syntax:
typedef *>
Príklad:
typedef int* iPtr; iPtr pointer1, pointer2;>
Nižšie je uvedený program na použitie typedef s dátovými ukazovateľmi.
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;> }> |
>
>Výkon
a is: 10 b is: 20>
(ii) Použitie s ukazovateľmi funkcií:
Nižšie je uvedená syntax, príklad a kód na zobrazenie použitia typedef s ukazovateľmi funkcií.
Syntax:
typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, .... );>
Príklad:
typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>
Tu je teraz možné použiť fun ptr na vytvorenie ďalších ukazovateľov funkcií. To bude jasnejšie v kóde nižšie.
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;> }> |
>
>Výkon
8 6>
Tu je func_ptr1 normálny ukazovateľ funkcie, zatiaľ čo func_ptr2 je ukazovateľ funkcie typedef a možno ho použiť na vytvorenie viacerých ukazovateľov funkcií s 2 celými číslami ako argumentmi as návratovým typom int.
Poznámka: func_ptr2 už nie je možné použiť ako nezávislý ukazovateľ funkcie a možno ho použiť iba na vytváranie ukazovateľov nových funkcií, ktoré môžu ukazovať iba na funkciu, ktorá vracia int a ako parametre berie dva typy int.