typedef nøgleord i C++ bruges til aliassering af eksisterende datatyper, brugerdefinerede datatyper og pointere til et mere meningsfuldt navn. Typedefs giver dig mulighed for at give beskrivende navne til standarddatatyper, som også kan hjælpe dig med at selvdokumentere din kode. For det meste bruges typedefs til aliasing, kun hvis det foruddefinerede navn er for langt eller komplekst til at skrive igen og igen. Den unødvendige brug af typedef er generelt ikke en god praksis.
Syntaks:
omskriv hvis ved rudyard kipling
typedef>
Eksempel:
typedef std::vector vInt;>
Nedenfor er C++-programmet til at 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;> }> |
>
>Produktion
190 180 10 10 27>
Anvendelser af typedef i C++
- typedef i C++ kan bruges til at aliasere foruddefinerede datatyper med lange navne.
- Det kan bruges med STL datastrukturer som Vektorer, strenge, kort osv.
- typedef kan også bruges med arrays.
- Vi kan bruge typedef med normale pointer såvel som funktionsvisere .
Brug af typedef med foruddefinerede datatyper
Typedef kan bruges til aliasing af foruddefinerede datatyper som f.eks int, char, float, og deres derivater som lang, kort, underskrevet, og usigneret. Det nye alias kan derefter bruges til at lave nye variabler af 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;> }> |
>
>Produktion
1232133>
Brug af typedef med STL-datastrukturer
typedef kan også bruges sammen med STL-datastrukturer, synes godt om Vektorer, strenge, kort osv. Hvis vi er en af dem, der ikke ønsker at importere det hele std navneområde i vores kode, så skal vi skrive std::vektor, std::streng osv. igen og igen. Brug af typedef, i dette tilfælde, kan således være en hurtig måde at forhindre dette på og holde vores kode ren og læsbar.
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; }> |
>
>Produktion
1 2 3 6 2 1>
Brug af typedef med arrays
typedef kan bruges med arrays til at lave nyere arrays (ligesom at bruge dem med STL datastrukturer). Vi kan nemt lave nye arrays eller lave arrays af arrays ved hjælp af typedef med arrays, mens vi holder vores kode læsbar, problemfrit.
Syntaks:
typedef [ ]>
Efter dette < alias_navn> kan nu bruges til at skabe arrays af typen- < data_type> 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;> }> |
>
>Produktion
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Bruger typedef med pointere
Typedef kan også bruges med pointere. For hurtigere oprettelse af pointere og til at holde koden læsbar. Vi kan bruge dem med både datapointere og funktionspointere.
(i) Brug med datapointere:
Nedenfor er syntaksen, eksemplet og kildekoden til brug af typedef med datapointere
Syntaks:
typedef *>
Eksempel:
typedef int* iPtr; iPtr pointer1, pointer2;>
Nedenfor er programmet til at bruge typedef med datapointere.
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) Brug med funktionsmarkører:
Nedenfor er syntaksen, eksemplet og koden til at vise brugen af typedef med funktionsmarkører.
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 nu bruges til at lave flere funktionspointere. Dette vil være mere tydeligt i koden nedenfor.
C++
python chr funktion
#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>
Her er func_ptr1 en normal funktion pointer, mens func_ptr2 er en typedef funktion pointer, og den kan bruges til at lave flere funktion pointere, der tager 2 heltal som argumenter og med returtype int.
Bemærk: func_ptr2 kan ikke længere bruges som en uafhængig funktionsmarkør, og den kan kun bruges til at skabe nye funktionsmarkører, som kun kan pege på funktion, der returnerer int og tager to int-typer som deres parametre.