logo

typedef i C++

typdef nyckelord i C++ används för att aliasera befintliga datatyper, användardefinierade datatyper och pekare till ett mer meningsfullt namn. Typedefs låter dig ge beskrivande namn till standarddatatyper, vilket också kan hjälpa dig att självdokumentera din kod. Oftast används typedefs för aliasing, bara om det fördefinierade namnet är för långt eller komplicerat för att skriva om och om igen. Onödig användning av typedef är i allmänhet inte en bra praxis.

Syntax:



imessage-spel med Android
typedef>

Exempel:

typedef std::vector vInt;>

Nedan är C++-programmet för att implementera 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;> }>

>

>

Produktion

190 180 10 10 27>

Applikationer av typedef i C++

  • typedef i C++ kan användas för aliasing av fördefinierade datatyper med långa namn.
  • Den kan användas med STL-datastrukturer som Vektorer, strängar, kartor, etc.
  • typedef kan också användas med arrayer.
  • Vi kan använda typedef med vanliga pekare såväl som funktionspekare .

Använder typedef med fördefinierade datatyper

Typedef kan användas för aliasing av fördefinierade datatyper som int, röding, flyta, och deras derivat som lång, kort, signerad, och osignerad. Det nya aliaset kan sedan användas för att skapa nya variabler av respektive typ.

Syntax:

typedef>

Exempel:

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;> }>

>

>

Produktion

1232133>

Använder typedef med STL-datastrukturer

typedef kan också användas med STL-datastrukturer, tycka om Vektorer, strängar, kartor, etc. Om vi ​​är en av dem som inte vill importera hela std namnutrymme i vår kod måste vi skriva std::vector, std::string, etc, om och om igen. Att använda typedef, i det här fallet, kan alltså vara ett snabbt sätt att förhindra detta och hålla vår kod ren och läsbar.

Syntax:

typedef>

Exempel:

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; }>

>

>

Produktion

1 2 3 6 2 1>

Använder typedef med arrayer

typedef kan användas med arrayer för att göra nyare arrayer (precis som att använda dem med STL-datastrukturer). Vi kan enkelt skapa nya arrayer eller göra arrayer av arrayer med hjälp av typedef med arrayer, samtidigt som vi håller vår kod läsbar, sömlöst.

Syntax:

typedef [ ]>

Efter detta < alias_name> kan nu användas för att skapa arrayer av typen- < data_typ> och storlek .

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;> }>

>

>

Produktion

Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>

Använder typedef med pekare

Typedef kan också användas med pekare. För snabbare skapande av pekare och för att hålla koden läsbar också. Vi kan använda dem med både datapekare och funktionspekare.

(i) Användning med datapekare:

Nedan är syntaxen, exemplet och källkoden för att använda typedef med datapekare

Syntax:

typedef *>

Exempel:

typedef int* iPtr; iPtr pointer1, pointer2;>

Nedan är programmet för att använda typedef med datapekare.

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;> }>

>

>

Produktion

a is: 10 b is: 20>

(ii) Användning med funktionspekare:

Nedan finns syntax, exempel och kod för att visa användningen av typedef med funktionspekare.

Syntax:

typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, .... );>

Exempel:

typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>

Här kan nu fun ptr användas för att skapa fler funktionspekare. Detta kommer att framgå tydligare i koden nedan.

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;> }>

>

>

Produktion

8 6>

Här är func_ptr1 en normal funktionspekare, medan func_ptr2 är en typedef funktionspekare och den kan användas för att skapa fler funktionspekare som tar 2 heltal som argument och med returtyp int.

Notera: func_ptr2 kan inte längre användas som en oberoende funktionspekare och den kan endast användas för att skapa nya funktionspekare som bara kan peka på funktion som returnerar int och tar två int-typer som parametrar.

gimp ändra färg