Typedef-avainsanaa C++:ssa käytetään olemassa olevien tietotyyppien, käyttäjän määrittämien tietotyyppien ja merkityksellisemmän nimen osoittamiseen. Typedefs antaa sinun antaa kuvaavia nimiä vakiotietotyypeille, mikä voi myös auttaa sinua dokumentoimaan koodisi itse. Useimmiten typedefiä käytetään aliasointiin, vain jos ennalta määritetty nimi on liian pitkä tai monimutkainen kirjoitettavaksi uudestaan ja uudestaan. Typedefin tarpeeton käyttö ei yleensä ole hyvä käytäntö.
Syntaksi:
df.loc
typedef>
Esimerkki:
typedef std::vector vInt;>
Alla on C++-ohjelma typedefin toteuttamiseksi
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;> }> |
>
>Lähtö
190 180 10 10 27>
Typedefin sovellukset C++:ssa
- Typedef C++:ssa voidaan käyttää ennalta määritettyjen tietotyyppien aliasointiin pitkillä nimillä.
- Sitä voidaan käyttää STL-tietorakenteiden, kuten Vektorit, merkkijonot, kartat jne.
- typedefiä voidaan käyttää myös taulukoiden kanssa.
- Voimme käyttää typedefiä kanssa normaalit osoittimet yhtä hyvin kuin toimintoosoittimet .
Typedef:n käyttö ennalta määritettyjen tietotyyppien kanssa
Typedefiä voidaan käyttää ennalta määritettyjen tietotyyppien, kuten esim int, char, float, ja niiden johdannaiset, kuten pitkä, lyhyt, signeerattu, ja allekirjoittamaton. Uutta aliasta voidaan sitten käyttää vastaavien tyyppisten uusien muuttujien tekemiseen.
Syntaksi:
typedef>
Esimerkki:
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;> }> |
>
>Lähtö
1232133>
Typedef:n käyttö STL-tietorakenteiden kanssa
typedefiä voidaan käyttää myös STL-tietorakenteet, Kuten Vektorit, merkkijonot, kartat jne. Jos olemme yksi niistä, jotka eivät halua tuoda koko std-nimiavaruus koodissamme, meidän on kirjoitettava std::vector, std::string jne. uudestaan ja uudestaan. Näin ollen typedefin käyttö voi tässä tapauksessa olla nopea tapa estää tämä ja pitää koodimme puhtaana ja luettavana.
Syntaksi:
typedef>
Esimerkki:
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;>> > vInt vec1{ 1, 2, 3, 6, 2, 1 };> > > // Outputting the vector> > for> (> int> i = 0; i std::cout << vec1[i] <<' '; } return 0; }> |
>
>Lähtö
1 2 3 6 2 1>
Typedefin käyttö taulukoiden kanssa
typedefiä voidaan käyttää taulukoiden kanssa uusien taulukoiden tekemiseen (kuten niitä käytettäessä STL-tietorakenteiden kanssa). Voimme helposti tehdä uusia taulukoita tai tehdä matriiseja käyttämällä typedefiä taulukoiden kanssa pitäen samalla koodimme luettavana, saumattomasti.
Syntaksi:
typedef [ ]>
Tämän jälkeen < alias_nimi> voidaan nyt käyttää luomaan taulukoita, joiden tyyppi on- < data_type> ja koko .
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;> }> |
>
>Lähtö
Array output: 1 1 1 Matrix output: 0 0 0 0 1 2 0 2 4>
Typedefin käyttö osoittimien kanssa
Typedefiä voidaan käyttää myös osoittimien kanssa. Nopeampi osoittimien luominen ja koodin pitäminen luettavana. Voimme käyttää niitä sekä dataosoittimien että toimintoosoittimien kanssa.
(i) Käyttö dataosoittimien kanssa:
Alla on syntaksi, esimerkki ja lähdekoodi typedefin käyttämiselle dataosoittimien kanssa
Syntaksi:
typedef *>
Esimerkki:
typedef int* iPtr; iPtr pointer1, pointer2;>
Alla on ohjelma, joka käyttää typedefiä dataosoittimien kanssa.
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;> }> |
>
java on tyhjä
>Lähtö
a is: 10 b is: 20>
( ii ) Käyttö toimintoosoittimien kanssa:
Alla on syntaksi, esimerkki ja koodi typedef:n käytön näyttämiseksi funktioosoittimien kanssa.
Syntaksi:
typedef < return_type>(*< alias_name>)(< parameter_type>,< parameter_type>, .... );>
Esimerkki:
typedef int (*fun_ptr)(int, int); fun_ptr new_ptr = &function;>
Tässä hauskoja ptr:iä voidaan nyt käyttää luomaan lisää funktioosoittimia. Tämä käy selvemmin alla olevasta koodista.
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;> }> |
>
>Lähtö
8 6>
Tässä func_ptr1 on normaali funktioosoitin, kun taas func_ptr2 on typedef-funktioosoitin ja sillä voidaan luoda lisää funktioosoittimia, joissa argumenteina on 2 kokonaislukua ja palautustyyppi int.
Huomautus: func_ptr2:ta ei voi enää käyttää itsenäisenä funktioosoittimena ja sitä voidaan käyttää vain uusien funktioosoittimien luomiseen, jotka voivat osoittaa vain funktioon, joka palauttaa int ja ottaa parametreiksi kaksi int-tyyppiä.