Allereerst moet je er iets van weten Sjabloon Macro's En Vectoren voordat je doorgaat naar de volgende fase!
- Sjablonen vormen de basis van generiek programmeren, waarbij code wordt geschreven op een manier die onafhankelijk is van een bepaald type.
- Een macro is een codefragment dat een naam heeft gekregen. Telkens wanneer de naam wordt gebruikt, wordt deze vervangen door de inhoud van de macro.
- Vectoren zijn hetzelfde als dynamische arrays met de mogelijkheid om de grootte automatisch aan te passen wanneer een element wordt ingevoegd of verwijderd, waarbij de opslag automatisch door de container wordt afgehandeld.
We kunnen deze krachtige tools dus gebruiken om onze code op een effectieve manier te schrijven.
Enkele van de coole trucs die kunnen worden gebruikt bij competitief programmeren worden als volgt gegeven:
// 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; }
Uitgang:
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; }
Uitgang:
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; }
Uitgang:
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
Voor meer informatie over snelle invoer en uitvoer Lees dit 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-10) cout << array[i] << ' '; return 0; }
Uitvoer
4 5 6 9 22 11 5 6 9 22 11 11 22 9 6 5 4
std::ios_base::sync_with_stdio(false);
Uiteindelijk kun je door deze slimme trucs te gebruiken eenvoudig code schrijven in een minimum aan tijd en woorden.