Klíčové slovo typedef v C++ se používá pro alias existujících datových typů, uživatelsky definovaných datových typů a ukazatelů na smysluplnější název. Typedefs vám umožňují přidělovat standardním datovým typům popisné názvy, což vám také může pomoci s vlastní dokumentací kódu. Pro aliasing se většinou používají definice typu, pouze pokud je předdefinovaný název příliš dlouhý nebo složitý na to, aby se dal znovu a znovu zapisovat. Zbytečné používání typedef obecně není dobrým zvykem.
Syntax:
sort arraylist v Javě
typedef>
Příklad:
typedef std::vector vInt;>
Níže je uveden program C++ pro implementaci definice typu
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ýstup
190 180 10 10 27>
Aplikace typedef v C++
- typedef v C++ lze použít pro alias předdefinovaných datových typů s dlouhými názvy.
- Může být použit s datovými strukturami STL jako vektory, řetězce, mapy atd.
- typedef lze také použít s poli.
- Můžeme použít typedef s normální ukazatele jakož i ukazatele funkcí .
Použití typedef s předdefinovanými datovými typy
Typedef lze použít pro alias předdefinovaných datových typů jako int, char, float, a jejich deriváty jako dlouhý, krátký, podepsaný, a nepodepsaný. Nový alias pak může být použit pro vytváření nových proměnných příslušných typů.
Syntax:
typedef>
Pří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ýstup
1232133>
Použití typedef s datovými strukturami STL
typedef lze také použít s STL datové struktury, jako vektory, řetězce, mapy atd. Pokud jsme jedni z těch, kteří nechtějí dovážet celé std jmenný prostor v našem kódu pak musíme znovu a znovu psát std::vector, std::string atd. Použití typedef tedy v tomto případě může být rychlým způsobem, jak tomu zabránit a udržet náš kód čistý a čitelný.
Syntax:
typedef>
Pří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ýstup
1 2 3 6 2 1>
Použití typedef s poli
typedef lze použít s poli pro vytváření novějších polí (stejně jako je používat s datovými strukturami STL). Můžeme snadno vytvořit nová pole nebo vytvořit pole polí pomocí typedef s poli, přičemž náš kód bude bez problémů čitelný.
Syntax:
typedef [ ]>
Po tomto < alias_name> lze nyní použít pro vytváření polí typu- < datový_typ> a 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;> }> |
>
>Výstup
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Použití typedef s ukazateli
Typedef lze použít také s ukazateli. Pro rychlejší vytváření ukazatelů a zachování čitelnosti kódu. Můžeme je použít jak s datovými ukazateli, tak s ukazateli funkcí.
(i) Použití s datovými ukazateli:
Níže je uvedena syntaxe, příklad a zdrojový kód pro použití typedef s datovými ukazateli
Syntax:
typedef *>
Příklad:
typedef int* iPtr; iPtr pointer1, pointer2;>
Níže je uveden program pro použití typedef s datovými ukazateli.
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ýstup
a is: 10 b is: 20>
(ii) Použití s ukazateli funkcí:
Níže je uvedena syntaxe, příklad a kód pro zobrazení použití definice typu s ukazateli funkcí.
Syntax:
typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, .... );>
Příklad:
typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>
Zde lze nyní fun ptr použít k vytvoření dalších ukazatelů funkcí. To bude jasnější v níže uvedeném kódu.
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ýstup
8 6>
Zde je func_ptr1 normální ukazatel funkce, zatímco func_ptr2 je ukazatel funkce typedef a lze jej použít k vytvoření více ukazatelů funkcí s 2 celými čísly jako argumenty as návratovým typem int.
Poznámka: func_ptr2 již nelze používat jako nezávislý ukazatel funkce a lze jej použít pouze pro vytváření ukazatelů nových funkcí, které mohou ukazovat pouze na funkci vracející int a mající dva typy int jako své parametry.
skóre přesnosti sklearn