כתיבת קוד C/C++ ביעילות בתכנות תחרותי
קודם כל אתה צריך לדעת על תבנית מאקרו ו וקטורים לפני המעבר לשלב הבא!
- תבניות הן הבסיס לתכנות גנרי הכוללות כתיבת קוד באופן שאינו תלוי בסוג מסוים כלשהו.
- מאקרו הוא קטע של קוד שקיבל שם. בכל פעם שהשם משמש הוא מוחלף בתוכן המאקרו.
- וקטורים זהים למערכים דינמיים עם היכולת לשנות את גודלו באופן אוטומטי כאשר אלמנט מוכנס או נמחק כאשר האחסון שלהם מטופל באופן אוטומטי על ידי המיכל.
אז אנחנו יכולים להשתמש בכלים החזקים האלה לכתיבת הקוד שלנו בצורה יעילה.
כמה מהטריקים המגניבים שעשויים לשמש בתכנות תחרותי ניתנים כדלקמן:
// 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 ; }
תְפוּקָה:
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 ; }
תְפוּקָה:
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 ; }
תְפוּקָה:
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
כדי לדעת יותר על קלט ופלט מהירים קרא את המאמר הזה .
#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 ; }
תְפוּקָה
4 5 6 9 22 11 5 6 9 22 11 11 22 9 6 5 4
std::ios_base::sync_with_stdio(false);
בסופו של דבר, באמצעות הטריקים החכמים האלה, אתה יכול בקלות לכתוב קוד במינימום זמן ומילים.