Эта статья предоставит несколько советов по повышению вашей продуктивности как программиста на C ++. Итак, без лишних слов, приступим.
1. Не изобретайте велосипед заново
Широко используйте встроенные функции C ++ и его библиотеки STL.
Например, используйте pow и __gcd вместо того, чтобы создавать свою функцию для вычисления мощности и gcd двух чисел.
Примечание. Есть одна загвоздка в использовании встроенной функции pow для вычисления степени двух чисел.
используйте int(pow(x, y) + 0.5)
вместо pow(x, y).
Начните широко использовать C ++ STL, у него есть два преимущества: во-первых, вам не нужно переписывать одни и те же структуры данных и алгоритмы снова и снова, во-вторых, он делает код более читабельным.
Например, вы можете использовать префиксную сумму. Будете ли вы писать код с нуля, НЕТ, вы будете использовать partial_sum
build в библиотеке C ++ STL.
Если вы хотите узнать больше о C ++ STL, прочтите эту статью.
2. Добавьте один файл заголовка.
Вы должны включить много файлов заголовков, таких как iostream, cstdlib, cmath, вектор, стек, алгоритм и т. Д. Но вы можете включить только один файл заголовка, чтобы выполнить свою работу. Этот файл заголовка очень полезен для конкурентоспособных программистов.
Этот файл заголовка
#include<bits/stdc++.h>
Примечание.Если вы запускаете свой исполняемый файл в производство, это увеличит размер исполняемого файла, поэтому не рекомендуется включать этот файл заголовка в этом конкретном случае, поскольку вы будете включать много ненужных файлов, которые вы не будете using.
Подсказка: Используйте «\ n» вместо endl в соревновательном программировании.
3. Начните использовать макросы.
Макросы очень удобны, особенно в коротких конкурсах программирования. Это макросы, которые я использую.
макрос watch
очень удобен при отладке, поскольку мы можем использовать его для просмотра значения переменных вместе с их именами ..
теперь вы должны использовать sort(all(container))
вместо sort(container.begin(), container.end())
вас должно накормить написанием for(auto it = container.begin(); it != container.end(); it++)
, теперь начинайте писать tr(container, it)
.
rep
означает повторение.
rep(i, a, n)
повторяется от «a» до «n», исключая «n». rep0 (i, n) выполняет итерацию на основе 0-индексации. rep1 (i, n) выполняет итерацию на основе 1-индексации.
Вы можете включить одну строку fastio
, чтобы cin и cout работали так же быстро, как scanf и printf. Для больших входных файлов это значительно повышает производительность вашей программы.
4. Создайте файл утилит
Вы можете включить этот файл в любую программу, чтобы видеть значения в различных контейнерах.
5. Чтение и запись нескольких переменных в одну строку.
Просто включите эти две функции в свою программу, и таким образом вы сможете читать несколько входов с консоли и записывать несколько выходов на консоль. Вот как это можно сделать:
int x, y, z; read(x, y, z); write(x, y, z);
Примечание: некоторые компиляторы могут помечать предупреждение при использовании этих функций, но вам нужно игнорировать их.
6. Используйте лучший текстовый редактор / IDE.
Прекратите использовать Turbo C ++, Dev C ++, Codeblocks и используйте лучший текстовый редактор / IDE, например Visual Studio, Visual Studio Code, Clion, CodeLite.
У них лучше intellisense и автоматическое завершение кода.
Краткое примечание. Используйте Visual Studio (IDE), только если у вас действительно высокопроизводительный компьютер, поскольку он достаточно тяжелый.
Мой личный фаворит - Visual Studio Code. Он намного легче, чем Visual Studio, и обладает множеством функций. Я использую его для всего, буквально для всего. Подробнее о возможностях vscode вы можете прочитать здесь.
7. Настройте текстовый редактор / IDE.
Этот пункт предназначен специально для пользователей vscode. Вы можете искать похожие вещи для редактора по вашему выбору.
Я установил шаблон по умолчанию для c ++ в vscode в качестве быстрого старта. Вы также можете сделать это следующим образом:
Перейдите в Файл - ›Настройки -› Пользовательские фрагменты. Откроется палитра команд. Затем создайте фрагмент для файла c ++. Что-то вроде этого :
Пример программы
Ниже приведен пример программы, которая включает в себя все вышеперечисленные моменты :)
Примечание. Обратите внимание, что я поместил using namespace std;
после строки 12 перед всеми typedef. Если я поместил его после любого typedef, то некоторые онлайн-компиляторы, такие как hackerrank, могут пометить ошибку.
Пожалуйста, хлопайте в ладоши, если вам это нравится.
Прокомментируйте, если вы обнаружили какие-либо несоответствия в этой статье, или если вы хотите, чтобы я добавил что-то в эту статью, или если у вас есть какие-либо вопросы, связанные с этой статьей.
Подписывайтесь на меня на Github ✌
Подключите меня к LinkedIn 🤝