logo

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:



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