typedef nøkkelord i C++ brukes for å aliase eksisterende datatyper, brukerdefinerte datatyper og pekere til et mer meningsfylt navn. Typedefs lar deg gi beskrivende navn til standard datatyper, som også kan hjelpe deg med å selvdokumentere koden din. For det meste brukes typedefs for aliasing, bare hvis det forhåndsdefinerte navnet er for langt eller komplekst til å skrive igjen og igjen. Unødvendig bruk av typedef er generelt ikke en god praksis.
Syntaks:
omskriv hvis ved rudyard kipling
typedef>
Eksempel:
typedef std::vector vInt;>
Nedenfor er C++-programmet for å implementere 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;> }> |
>
>Produksjon
190 180 10 10 27>
Applikasjoner av typedef i C++
- typedef i C++ kan brukes for aliasing av forhåndsdefinerte datatyper med lange navn.
- Den kan brukes med STL-datastrukturer som Vektorer, strenger, kart osv.
- typedef kan også brukes med arrays.
- Vi kan bruke typedef med vanlige pekere i tillegg til funksjonspekere .
Bruke typedef med forhåndsdefinerte datatyper
Typedef kan brukes for aliasing av forhåndsdefinerte datatyper som int, røye, flyte, og deres derivater som lang, kort, signert, og usignert. Det nye aliaset kan deretter brukes til å lage nye variabler av respektive type.
Syntaks:
typedef>
Eksempel:
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;> }> |
>
>Produksjon
1232133>
Bruker typedef med STL-datastrukturer
typedef kan også brukes med STL-datastrukturer, som Vektorer, strenger, kart osv. Hvis vi er en av dem, som ikke ønsker å importere hele standard navneområde i koden vår, så må vi skrive std::vector, std::string, etc, igjen og igjen. Dermed kan bruk av typedef, i dette tilfellet, være en rask måte å forhindre dette på og holde koden vår ren og lesbar.
Syntaks:
typedef>
Eksempel:
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; }> |
>
>Produksjon
1 2 3 6 2 1>
Bruke typedef med arrays
typedef kan brukes med matriser for å lage nyere matriser (akkurat som å bruke dem med STL-datastrukturer). Vi kan enkelt lage nye arrays eller lage arrays av arrays ved hjelp av typedef med arrays, samtidig som koden vår er lesbar, sømløst.
Syntaks:
typedef [ ]>
Etter dette < alias_navn> kan nå brukes til å lage arrays av typen- < datatype> og størrelse .
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;> }> |
>
>Produksjon
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Bruker typedef med pekere
Typedef kan også brukes med pekere. For raskere oppretting av pekere, og holde koden lesbar også. Vi kan bruke dem med både datapekere og funksjonspekere.
(i) Bruk med datapekere:
Nedenfor er syntaksen, eksempelet og kildekoden for bruk av typedef med datapekere
Syntaks:
typedef *>
Eksempel:
typedef int* iPtr; iPtr pointer1, pointer2;>
Nedenfor er programmet for å bruke typedef med datapekere.
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;> }> |
>
>Produksjon
a is: 10 b is: 20>
(ii) Bruk med funksjonspekere:
Nedenfor er syntaksen, eksempelet og koden for å vise bruken av typedef med funksjonspekere.
Syntaks:
typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, .... );>
Eksempel:
typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>
Her kan fun ptr nå brukes til å lage flere funksjonspekere. Dette vil være mer tydelig i koden nedenfor.
C++
eol i python
#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;> }> |
>
>Produksjon
8 6>
Her er func_ptr1 en normal funksjonspeker, mens func_ptr2 er en typedef funksjonspeker og den kan brukes til å lage flere funksjonspekere som tar 2 heltall som argumenter og med returtype int.
Merk: func_ptr2 kan ikke lenger brukes som en uavhengig funksjonspeker og den kan bare brukes til å lage nye funksjonspekere som bare kan peke til funksjon som returnerer int og tar to int-typer som parametere.