Изучаем C++. По вопросам сотрудничества: @adv_and_pr
init внутри if и switch
Эта возможность C++17 мне полюбилась сразу же, как только я узнал о ней.
Теперь вы можете инициализировать переменные и проверять условия сразу же внутри блоков if и switch. Это помогает сохранять код понятным и чистым.
#вопросы_с_собеседований
Что такое чисто виртуальный метод и абстрактный класс?
Ответ: Чисто виртуальный метод — это метод, у которого отсутствует реализация. Абстрактный класс — это класс имеющий хотя бы один чисто виртуальный метод. Как следствие, экземпляр подобного класса не может быть создан т.к. отсутствует реализация виртуального метода.
Ищем 100 человек, которые пройдут 4 курса по IT бесплатно и дадут обратную связь!
Старая цена - 23 500 руб
Цена для тестовой группы - 0 руб 💯
👉🏻 Получить курсы тут
Где найти рейтинг лучших курсов по программированию?
Мы — tutortop, самый крупный агрегатор курсов на рынке онлайн-образования! Сейчас в нашем сервисе представлено более 5000 курсов от более чем 300 школ и все их можно сравнить по рейтингу, цене и отзывам, а еще купить дешевле, чем в напрямую🔥
Специально для вас мы собрали подборку из топовых курсов в IT по мнению наших пользователей:
– Профессия «Веб-разработчик с гарантией трудоустройства» от Skypro. Рейтинг 4.9 на основе 187 отзывов.
– Профессия «Python-разработчик» от ProductStar. Рейтинг 4.8 на основе 97 отзывов.
– Онлайн-курс «Java разработка» от Kata Academy by Java Mentor. Рейтинг 4.8 на основе 36 отзывов.
Еще более 500 курсов по любому направлению в программировании можно найти и сравнить в tutortop!⚡️
За что разработчики любят Rust?
⚡️Приглашаем 18 января в 20:00 на бесплатный вебинар «За что разработчики любят Rust?».
📚 На вебинаре мы ответим на вопросы:
1. Почему разработчики ПО переходят на Rust с других языков и не хотят возвращаться?
2. Каково место Rust среди других языков,
3. В чем его отличительные черты и нововведения?
4. Какие ниши занимает Rust и может занять в будущем?
🔥 Спикер вебинара: Кирилл Федченко, руководитель программы в OTUS и Lead Rust Developer в InfinitySwap.
👉🏻 Зарегистрироваться на вебинар
Вебинар является частью онлайн-курса для начинающих «Rust Developer. Basic» от OTUS.
Алгоритм copy_n
Используется для копирования элементов из одного контейнера в другой.
Использование emplace_back вместо push_back
В C++ 11 emplace_back работает так же, как push_back, добавляя элементы в конец вектора. emplace_back работает быстрее, так как push_back сначала создает временную переменную, а затем добавляет ее в конец вектора.
Функция none_of()
Эта функция возвращает true, если ни один из элементов не удовлетворяет данному условию, иначе возвращает false.
Поскольку все элементы положительны, функция возвращает true.
#вопросы_с_собеседований
Какой код выполняется до функции main?
Ответ:
Конструкторы глобальных объектов.
Высокоточный эмулятор Nintendo Game Boy Advance.
https://www.libhunt.com/r/NanoBoyAdvance
Алгоритмы диапазонов C++20 — 7 немодифицирующих операций
Библиотека Ranges для C++20 предлагает альтернативы для большинства алгоритмов. Автор показывает десять немодифицирующих операций. Происходит их сравнение со «старой» стандартной версией и показывается их преимущества и ограничения.
Смотреть статью
с новым годом, дорогие подписчики. надеюсь следующий год будет не на таких унылиусах как этот
Читать полностью…#вопросы_с_собеседований
Что делает данный код?
Правильный ответ: ничего не делает.
int main() // Функция main без аргументов.
{
[] // Объявление лямбда-функции без списка захвата...
() // ... с пустым списком аргументов ...
{} // ... и пустым телом, ...
(); // ... которая тут же вызывается.
}
Алгоритм accumulate
Возвращает сумму всех значений, лежащих в диапазоне между [first, last) с переменной init.
Как включить все стандартные библиотеки одной командой
Чтобы разом включить в проект все стандартные библиотеки, используйте #include <bits/stdc++.h>
. Это особенно полезно в условиях дефицита времени на соревнованиях по программированию.
Но помните, что:
#include <bits/stdc++.h>содержит множество заголовочных файлов, которые, возможно, и не понадобятся в конкретном проекте. А это может привести к увеличению времени компиляции.
#include <bits/stdc++.h>
не является стандартным заголовочным файлом библиотеки GNU C++. Таким образом, не относящиеся к типу GCC (GNU Compiler Collection) компиляторы могут испытывать затруднения в процессе исполнения. Однако так бывает не часто!
Читать полностью…
Сортировка пузырьком
Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива.
Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 1000) – количество элементов в массиве. На второй строке – сам массив. Гарантируется, что все элементы массива – различные целые числа, не превышающие по модулю 10^9.
Формат выходных данных:
Выведите одно число – количество обменов пузырьковой сортировки.
#вопросы_с_собеседований
Для чего используется ключевое слово volatile?
Для указания компилятору, что доступ к переменной может осуществляться из мест, неподконтрольных ему. А как следствие, что работу с данной переменной не нужно подвергать разного рода оптимизациям.
Т.е. если volatile присутствует в каком-то условии, которое не меняется со временем, то компилятор может оптимизировать его, чтобы избежать ненужных проверок, при использовании volatile компилятор скорее всего не будет этого делать.
#вопросы_с_собеседований
В чем отличие vector от deque?
Ответ: Здесь вспоминают о наличии у deque методов push_front и pop_front. Но основное отличие в организации памяти, у vector она как у обычного Си-массива, т.е. последовательный и непрерывный набор байт, а у deque это фрагменты с разрывами. За счет этого отличия vector всегда можно привести к обычному массиву или скопировать целиком участок памяти, но зато у deque операции вставки/удаления в начало быстрее (O(1) против O(n)), ввиду того, что не нужно перемещать.
Избавляемся от макросов
В целом, разработчики стандарта стараются исключить препроцессор. Как следствие, в новой версии можно не пользоваться макросами FILE и LINE, а взамен использовать std::source_location(см картинку).
Как мы видим, код становится более единообразным, в одном стиле, с расширяемым функционалом.
malloc стал безопасен
В предыдущих версиях использование низкоуровневых функций, унаследованных из языка Си, не рекомендовалось. Проблема в том, что Си оперирует байтами, а в С++ происходит работа с объектами со своим временем жизни и областью видимости. До С++ 20 время жизни объекта начиналось после вызова оператора new. В новой версии все изменилось — принято считать, что набор низкоуровневых функций — memcpy, memmove, malloc, aligned_alloc, calloc, realloc, bit_cast, начинает время жизни объекта. Т. е. следующий код(см картинку) будет валиден.
Т. е. у нас появляется обратная совместимость с языком Си, но относительно С++ в новой трактовке.
💪 Пройди тест по C++ и проверь свои знания.
Ответишь — пройдешь на продвинутый курс "C++ Developer. Professional" от OTUS по специальной цене + получишь демо-ролик о занятиях на курсе в подарок и доступ к открытым урокам курса🎁 .
✍️ ПРОЙТИ ТЕСТ: https://otus.pw/rbIf/
Хочешь протестировать учебный процесс заранее? Тогда приходи на открытый урок курса!
📢📢 25 января в 20:00 открытый урок «Полезные инструменты в разработке на С++». Реклама. Информация о рекламодателе на сайте otus.ru
Является ли число степенью двойки
Мы можем проверить, является ли число степенью двойки или нет напрямую, используя код выше. :D
Вывод параметра шаблона класса
Довольно странное название функции, да? Её суть в том, что с C++17 компилятор может сам определять типы аргументов конструкторов стандартных классов. Раньше же это работало лишь для функций.
Для того, чтобы осознать удобство этой функции, нужно быть знакомыми с конструкторами классов в C++.
Функция isprint()
В C++ isprint() — это предопределенная функция, используемая для обработки строк и символов. cstring — это заголовочный файл, необходимый для строковых функций, а cctype — заголовочный файл, необходимый для символьных функций.
Эта функция используется для проверки того, содержит ли аргумент какие-либо печатные символы.
Подробнее можно почитать здесь.
Оптимизация GUI на Qt.
https://habr.com/ru/post/672962/
Создание игр на C++: Марио (платформер)
Смотреть видео
Задача
В текстовом файле, содержащем текст программы на языке Си, проверить соответствие открывающихся и закрывающихся фигурных скобок { и }. Результат проверки вывести на экран и записать в виде фразы в текстовый файл. Результат работы программы (вывод) поместить в отдельный текстовый файл (например, "out . txt " ), продублировав на экране.
53 вопроса с собеседований по C++.
https://www.youtube.com/watch?v=aYM7lksQ8yg
👨💻 Полный курс по C++
Большой плейлист из более чем 200 коротких уроков по C++. Отлично подойдёт тем, кто хочет учить этот язык постепенно по 5-15 минут в день.
В первых уроках вы изучите теорию и базовые понятия этого языка, а в последующих — перейдёте к более сложным терминам и начнёте создавать свои первые программы.
https://youtu.be/kRcbYLK3OnQ
#вопросы_с_собеседований
Что выведет код сверху?
Ответ: “Constructor called” 5 раз и затем “Destructor called” 5 раз.
В приведенной выше программе мы сначала инициировали переменные с пятью указателями, используя ключевое слово new, следовательно, после этого будет вызван конструктор fives time, поскольку мы используем delete[] (используется для удаления нескольких объектов) для удаления переменных, следовательно, все созданные пять объектов будут уничтожены и, следовательно, будет вызван деструктор five times.