Перейти к содержимому
Технологии IT обновлён 18.03.2022

Senior C++ Developer

Изучаем C++.

Публикации канала

#вопросы_с_собеседований Для чего используется ключевое слово volatile? Для указания компилятору, что доступ к переменной может осуществляться из мест, неподконтрольных ему. А как следствие, что работу с данной переменной не нужно подвергать разного рода оптимизациям. Т.е. если volatile присутствует в каком-то условии, которое не меняется со временем, то компилятор может оптимизировать его, чтобы избежать ненужных проверок, при использовании volatile компилятор скорее всего не будет этого делать.

Открыть в Telegram

Использование emplace_back вместо push_back В C++ 11 emplace_back работает так же, как push_back, добавляя элементы в конец вектора. emplace_back работает быстрее, так как push_back сначала создает временную переменную, а затем добавляет ее в конец вектора.

Открыть в Telegram

Пример простой нейросети на С/C++ Смотреть статью Хабр Пример простой нейросети на С/C++ Всем привет. Решил поделиться простым и ёмким на мой взгляд решением нейронной сети на С++. Почему эта информация должна быть интересна? Ответ: я старался в...

Открыть в Telegram

Безопасно рисуем иконки в ПЗУ и ловим UB в C++ коде на IAR компиляторе Смотреть статью Хабр Безопасно рисуем иконки в ПЗУ и ловим UB в C++ коде на IAR компиляторе Доброго времени суток хабровчане. Давненько я не писал, был довольно сильно занят семьей, начались тренировки и нужно каждый день возить детей. Но вот наконец-то есть время чтобы немного вспомнить про...

Открыть в Telegram

Атрибуты [[likely]] и [[unlikely]] В C++20 мы получили новые атрибуты [[likely]] и [[unlikely]], которые позволяют подсказывать оптимизатору, является ли путь выполнения более или менее вероятным.

Открыть в Telegram

Строковые литералы как параметры шаблона Начиная с C ++ 20, вы можете использовать строку в качестве параметра шаблона, не являющегося типом. Идея состоит в том, чтобы использовать стандартную строку basic_fixed_string, которая имеет конструктор constexpr. Конструктор constexpr позволяет ему создать экземпляр фиксированной строки во время компиляции. Вроде бы мелочь, а приятно — не нужно производить обходных маневров и использовать лишнюю память.

Открыть в Telegram

Кортеж — tuple Как и pair, tuple — коллекция значений различных типов данных конкретного размера. В некоторых случаях вместо tuple удобнее использовать std::array. Это обычный массив с некоторыми функциями стандартной библиотеки C++, который был добавлен в C++11.

Открыть в Telegram

#вопросы_с_собеседований В чем разница между struct и class? Ответ: Практически ни в чем. В struct модификаторы доступа по умолчанию public, в class private. Также отличается и наследование по умолчанию, у struct — public, у class — private.

Открыть в Telegram

#вопросы_с_собеседований Какую проблему решает пространство имён? Пространство имен — это идентификатор, предоставляющий несколько библиотек. Используется для устранения конфликтов имен, когда имя связано с двумя или более библиотеками. Включает внешние объявления библиотеки с уникальными пространствами имен, что исключает возможность конфликта.

Открыть в Telegram

#вопросы_с_собеседований Объясните ключевые слова mutable и volatile. Ключевое слово volatile сообщает компилятору, что переменная может измениться без ведома компилятора. Переменные, объявленные как volatile, не будут кэшироваться компилятором и, таким образом, всегда будут считываться из памяти. Ключевое слово mutable можно использовать для переменных-членов класса. Изменяемые переменные могут меняться из константных функций-членов класса.

Открыть в Telegram

Трюки с логарифмом Функцию log можно использовать для ряда изящных решений.

Открыть в Telegram

Алгоритмы all_of, any_of и none_of Начиная с C ++ 11, в STL C ++ добавляются некоторые новые интересные алгоритмы. Эти алгоритмы работают с массивом и полезны для экономии времени во время кодирования и, следовательно, также полезны в конкурентном программировании.

Открыть в Telegram

Как написать «Змейку» на C++ в четыре переменные? Пишем классическую «Змейку», как на КДПВ, в четыре переменные. Смотреть статью

Открыть в Telegram

Алгоритм set_symmetric_difference Строит отсортированную последовательность из элементов, которые встречаются только в первой последовательности [first1, last1) или только во второй - [first2, last2).

Открыть в Telegram

Для чего нужен аллокатор и как создать свой собственный аллокатор? Аллокатор это шаблонный класс, который отвечает за выделение памяти и создание объектов. По умолчанию все контейнера используют std::allocator<T>. В языке c++ имеется так же возможность написать свой аллокатор. У своего алокатора должно быть такое объявление(см картинку).

Открыть в Telegram

Макрос watch Макрос watch — один из самых полезных приёмов. При отладке кода watch(переменная) выведет имя переменной и её значение.

Открыть в Telegram

init внутри if и switch Эта возможность C++17 мне полюбилась сразу же, как только я узнал о ней. Теперь вы можете инициализировать переменные и проверять условия сразу же внутри блоков if и switch. Это помогает сохранять код понятным и чистым.

Открыть в Telegram

Сортировка пузырьком Определите, сколько обменов сделает алгоритм пузырьковой сортировки по возрастанию для данного массива. Формат входных данных: На первой строке дано целое число n (1 ≤ n ≤ 1000) – количество элементов в массиве. На второй строке – сам массив. Гарантируется, что все элементы массива – различные целые числа, не превышающие по модулю 10^9. Формат выходных данных: Выведите одно число – количество обменов пузырьковой сортировки.

Открыть в Telegram

#вопросы_с_собеседований Что такое чисто виртуальный метод и абстрактный класс? Ответ: Чисто виртуальный метод — это метод, у которого отсутствует реализация. Абстрактный класс — это класс имеющий хотя бы один чисто виртуальный метод. Как следствие, экземпляр подобного класса не может быть создан т.к. отсутствует реализация виртуального метода.

Открыть в Telegram

#вопросы_с_собеседований В чем отличие vector от deque? Ответ: Здесь вспоминают о наличии у deque методов push_front и pop_front. Но основное отличие в организации памяти, у vector она как у обычного Си-массива, т.е. последовательный и непрерывный набор байт, а у deque это фрагменты с разрывами. За счет этого отличия vector всегда можно привести к обычному массиву или скопировать целиком участок памяти, но зато у deque операции вставки/удаления в начало быстрее (O(1) против O(n)), ввиду того, что не нужно перемещать.

Открыть в Telegram

Комментарии

0

Комментарии пишут вошедшие — так видно, кто автор.

Войти

Комментариев пока нет

Будьте первым, кто расскажет о канале другим.

Пожаловаться на канал

Расскажите, что не так: модератор проверит канал и примет решение. Подпись не нужна, но почту можно оставить — тогда ответим.

Причина Что не так (необязательно) Почта для ответа (необязательно)
Открыть в Telegram