logo

typedef w C++

Słowo kluczowe typedef w C++ służy do aliasowania istniejących typów danych, typów danych zdefiniowanych przez użytkownika i wskaźników do bardziej znaczących nazw. Typedefs pozwalają na nadawanie opisowych nazw standardowym typom danych, co może również pomóc w samodzielnym dokumentowaniu kodu. Do aliasów używa się głównie typedefs, tylko jeśli predefiniowana nazwa jest zbyt długa lub złożona, aby można ją było wielokrotnie zapisywać. Niepotrzebne użycie typedef nie jest ogólnie dobrą praktyką.

Składnia:



ascii a w Javie
typedef>

Przykład:

typedef std::vector vInt;>

Poniżej znajduje się program C++ do implementacji 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>>wint;> > >// 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;> }>

>

>

Wyjście

190 180 10 10 27>

Zastosowania typedef w C++

  • typedef w C++ może być używany do aliasowania predefiniowanych typów danych o długich nazwach.
  • Można go używać ze strukturami danych STL, takimi jak Wektory, ciągi znaków, mapy itp.
  • typedef można również używać z tablicami.
  • Możemy używać typedef z normalne wskazówki jak również wskaźniki funkcji .

Używanie typedef z predefiniowanymi typami danych

Typedef może być używany do aliasowania predefiniowanych typów danych, takich jak int, char, float, i ich pochodne, np długi, krótki, sygnowany, I niepodpisany. Nowy alias można następnie wykorzystać do tworzenia nowych zmiennych odpowiednich typów.

Składnia:

typedef>

Przykład:

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

>

>

Wyjście

1232133>

Używanie typedef ze strukturami danych STL

typedef może być również używany z Struktury danych STL, tak jak Wektory, ciągi znaków, mapy itp. Jeśli należymy do tych, którzy nie chcą importować całości standardowa przestrzeń nazw w naszym kodzie, musimy ciągle pisać std::vector, std::string itd. Dlatego w tym przypadku użycie typedef może być szybkim sposobem zapobiegania temu i utrzymania naszego kodu w czystości i czytelności.

Składnia:

typedef>

Przykład:

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

>

>

Wyjście

1 2 3 6 2 1>

Używanie typedef z tablicami

typedef można używać z tablicami do tworzenia nowszych tablic (podobnie jak przy użyciu ich ze strukturami danych STL). Możemy łatwo tworzyć nowe tablice lub tworzyć tablice tablic za pomocą typedef z tablicami, zachowując jednocześnie płynną czytelność naszego kodu.

Składnia:

typedef [ ]>

Po tym < nazwa_aliasu> można teraz używać do tworzenia tablic typu- < typ_danych> i rozmiar .

C++

sumator pełny sumator




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

>

>

Wyjście

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

Używanie typedef ze wskaźnikami

Typedef może być również używany ze wskaźnikami. Do szybszego tworzenia wskaźników i utrzymania czytelności kodu. Możemy ich używać zarówno ze wskaźnikami danych, jak i wskaźnikami funkcji.

( i ) Użycie ze wskaźnikami danych:

Poniżej znajduje się składnia, przykład i kod źródłowy używania typedef ze wskaźnikami danych

Składnia:

typedef *>

Przykład:

typedef int* iPtr; iPtr pointer1, pointer2;>

Poniżej znajduje się program do używania typedef ze wskaźnikami danych.

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

>

>

Wyjście

a is: 10 b is: 20>

( ii ) Użycie ze wskaźnikami funkcji:

Poniżej znajduje się składnia, przykład i kod pokazujący użycie typedef ze wskaźnikami funkcji.

Składnia:

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

Przykład:

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

W tym miejscu fun ptr można teraz wykorzystać do tworzenia większej liczby wskaźników funkcji. Będzie to bardziej jasne w poniższym kodzie.

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

>

>

Wyjście

8 6>

Tutaj func_ptr1 jest normalnym wskaźnikiem funkcji, podczas gdy func_ptr2 jest wskaźnikiem funkcji typedef i można go użyć do utworzenia większej liczby wskaźników funkcji przyjmujących 2 liczby całkowite jako argumenty i zwracających typ int.

Notatka: func_ptr2 nie może już być używany jako niezależny wskaźnik funkcji i może być używany jedynie do tworzenia nowych wskaźników funkcji, które mogą wskazywać jedynie na funkcję zwracającą int i przyjmującą dwa typy int jako parametry.