Skriver C/C++ kode effektivt i konkurrencedygtig programmering
Først og fremmest skal du vide om Skabelon Makroer og Vektorer før du går videre til næste fase!
- Skabeloner er grundlaget for generisk programmering, der involverer at skrive kode på en måde, der er uafhængig af en bestemt type.
- En makro er et fragment af kode, som har fået et navn. Når navnet bruges, erstattes det af indholdet af makroen.
- Vektorer er de samme som dynamiske arrays med evnen til at ændre størrelsen på sig selv automatisk, når et element indsættes eller slettes, mens deres lager håndteres automatisk af containeren.
Så vi kan bruge disse kraftfulde værktøjer til at skrive vores kode på en effektiv måde.
Nogle af de fede tricks, der kan bruges i konkurrencepræget programmering, er givet som følger:
// C++ program to demonstrate range based for // loops for accessing vector and array elements #include #include using namespace std ; int main () { // Create a vector object that // contains 5 elements vector < int > vec = { 0 1 2 3 4 }; // Type inference by reference using auto. // Range based loops are preferred when no // modification is needed in value for ( const auto & value : vec ) cout < < value < < ' ' ; cout < < 'n' ; // Basic 5 element integer array int array [] = { 1 2 3 4 5 }; for ( const auto & value : array ) cout < < value < < ' ' ; return 0 ; }
Produktion:
0 1 2 3 4 1 2 3 4 5
#include template < typename T > void printList ( std :: initializer_list < T > text ) { for ( const auto & value : text ) std :: cout < < value < < ' ' ; } // Driver program int main () { // Initialization list printList ( { 'One' 'Two' 'Three' } ); return 0 ; }
Produktion:
One Two Three
#include // Call by reference is used in x template < typename T typename U > static inline void amin ( T & x U y ) { if ( y < x ) x = y ; } // call by reference is used in x template < typename T typename U > static inline void amax ( T & x U y ) { if ( x < y ) x = y ; } // Driver program to find the Maximum and Minimum value int main () { int max_val = 0 min_val = 1e5 ; int array [] = { 4 -5 6 -9 2 11 }; for ( auto const & val : array ) // Same as max_val = max (max_val val) // Same as min_val = min (min_valval) amax ( max_val val ) amin ( min_val val ); std :: cout < < 'Max value = ' < < max_val < < ' n ' < < 'Min value = ' < < min_val ; return 0 ; }
Produktion:
Max value = 11 Min value = -9
#include template < typename T > void scan ( T & x ) { x = 0 ; bool neg = 0 ; register T c = getchar (); if ( c == '-' ) neg = 1 c = getchar (); while (( c < 48 ) || ( c > 57 )) c = getchar (); for ( ; c < 48 || c > 57 ; c = getchar ()); for ( ; c > 47 && c < 58 ; c = getchar () ) x = ( x < < 3 ) + ( x < < 1 ) + ( c & 15 ); if ( neg ) x *= -1 ; } template < typename T > void print ( T n ) { bool neg = 0 ; if ( n < 0 ) n *= -1 neg = 1 ; char snum [ 65 ]; int i = 0 ; do { snum [ i ++ ] = n % 10 + '0' ; n /= 10 ; } while ( n ); -- i ; if ( neg ) putchar ( '-' ); while ( i >= 0 ) putchar ( snum [ i -- ]); putchar ( 'n' ); } // Driver Program int main () { int value ; // Taking input scan ( value ); // Printing output print ( value ); return 0 ; }
Input: 756 Output: 756
For at vide mere om hurtig input og output Læs denne artikel .
#include using namespace std ; #define rep(in) for (i = 0; i < n; ++i) #define REP(ikn) for (i = k; i <= n; ++i) #define REPR(ikn) for (i = k; i >= n; --i) // Driver program to test above Macros int main () { int i ; int array [] = { 4 5 6 9 22 11 }; int size = sizeof ( array ) / sizeof ( array [ 0 ]); // Default 0 index based loop rep ( i size ) cout < < array [ i ] < < ' ' ; cout < < ' n ' ; // Starting index based loop REP ( i 1 size -1 ) cout < < array [ i ] < < ' ' ; cout < < ' n ' ; // Reverse for loop REPR ( i size -1 0 ) cout < < array [ i ] < < ' ' ; return 0 ; }
Produktion
4 5 6 9 22 11 5 6 9 22 11 11 22 9 6 5 4
std::ios_base::sync_with_stdio(false);
I sidste ende ved at bruge disse smarte tricks kan du nemt skrive kode på et minimum af tid og ord.
Du Kan Måske Lide
Top Artikler
Kategori
Interessante Artikler