أولا وقبل كل شيء تحتاج إلى معرفته نموذج وحدات الماكرو و المتجهات قبل الانتقال إلى المرحلة التالية!
- القوالب هي أساس البرمجة العامة التي تتضمن كتابة التعليمات البرمجية بطريقة مستقلة عن أي نوع معين.
- الماكرو هو جزء من التعليمات البرمجية التي تم تسميتها باسم. كلما تم استخدام الاسم يتم استبداله بمحتويات الماكرو.
- المتجهات هي نفس المصفوفات الديناميكية مع القدرة على تغيير حجم نفسها تلقائيًا عند إدراج عنصر أو حذفه مع معالجة تخزينها تلقائيًا بواسطة الحاوية.
حتى نتمكن من استخدام هذه الأدوات القوية لكتابة التعليمات البرمجية الخاصة بنا بطريقة فعالة.
فيما يلي بعض الحيل الرائعة التي يمكن استخدامها في البرمجة التنافسية:
// 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-10) 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);
في النهاية، باستخدام هذه الحيل الذكية، يمكنك بسهولة كتابة التعليمات البرمجية في أقل قدر ممكن من الوقت والكلمات.