Мы подобрали приёмы, которые сделают программирование на С++ легче или, как минимум, интереснее. Освежите свои знания!
Изучение С++ – дорога длиною в жизнь. Сегодня этот язык является рекордсменом по количеству подводных камней и способов выстрелить себе в ногу. При этом он нереально востребован и является одним из самых быстрых. Мы подготовили несколько советов, которые сделают ваш код более читаемым и оптимизированным.
Автовыведение типа
Несмотря на то, что ключевое слово auto было введено еще в C++ 11, многие программисты продолжают его игнорировать. А ведь автовыведение позволяет экономить время и делает код лаконичным.
Увидеть преимущества можно даже на примере стандартных типов STL:
Сложный расчет констант
Использование констант – хороший тон. Это позволяет компилятору лучше оптимизировать код и делает его более явным. Но если вычисление слишком громоздкое, от модификатора const приходится отказываться. На помощь приходят лямбда-функции:
Трюки с битовыми операциями
Эти приёмы не так полезны в повседневном программировании, но помогут козырнуть на собеседовании или соревнованиях:
Трюки с логарифмом
Функцию log тоже можно использовать для ряда изящных решений:
Встроенные алгоритмы
Удобно использовать встроенные функции all_of, any_of и none_of для быстрой проверки элементов коллекции на соответствие условию.
Трюки с шаблонами
Шаблоны сложнее для понимания, чем наши предыдущие советы, и могут показаться трудночитаемыми, но однозначно стоят потраченного времени.
Проверка специализации типа
Иногда встает задача проверить, является ли конкретный тип данных специализацией определенного шаблона. Для этого можно использовать синтаксис шаблонов template:
Проверка возможности конструирования элемента с набором конкретных параметров
Когда шаблонный класс задан в виде template<class T, typename... Args>, бывает трудно понять, какие аргументы можно использовать. Метод is_constructible из библиотеки type_traits даёт неполный ответ: он показывает, существует ли конструктор под конкретные аргументы. Для более полной картины можно использовать еще один шаблон:
Вызов функции через кортеж
Креативное применение шаблонов, которое позволяет вызвать любую функцию, передав в неё параметры в виде кортежа:
Поиск первого элемента указанного типа в кортеже
Кортежи, в силу своей способности хранить разные типы данных, часто бывают полезной коллекцией. Но эта же особенность может доставлять неудобства. Наш последний шаблон позволит без циклов находить в кортеже элементы определенного типа:
Знаете другие трюки для C++? Делитесь ими в комментариях!