typedef v C++

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:

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.