Senior C++ Developer
13K subscribers
1.26K photos
3 videos
576 links
№ 4931128893
Изучаем C++.

По вопросам сотрудничества: @adv_and_pr
Download Telegram
Задача

В текстовом файле, содержащем текст программы на языке Си, проверить соответствие открывающихся и закрывающихся фигурных скобок { и }. Результат проверки вывести на экран и записать в виде фразы в текстовый файл. Результат работы программы (вывод) поместить в отдельный текстовый файл (например, "out . txt " ), продублировав на экране.
Программирование на С++ и URI в коде

Вы можете поместить URI в свой код на C++, и компилятор не выдаст ошибку. Любой идентификатор, за которым следует двоеточие, становится меткой goto в С++. Все, что следует за двойным слешем, воспринимается как комментарий. Именно поэтому в приведенном выше коде http – это метка, а //google.com/ – комментарий. Но компилятор может выдать предупреждение, так как заданная метка не используется.
Основные концепции библиотеки chrono (C++)

Работа со временем как с безразмерной величиной может приводить к недоразумениям и ошибкам конвертации временных единиц измерения.

Для избежания таких ошибок предусмотрена библиотека chrono (namespace std::chrono). Она была добавлена в C++11 и дорабатывалась в поздних стандартах.

Смотреть статью
#вопросы_с_собеседований
Бывает такое, что оператор new не выделяет память?

Ответ:
Да, бывает, когда new передаётся указатель на уже выделенную память (например, с помощью malloc). Это называется placement new. И оператор new без изменения возвращает второй параметр - указатель (void* operator new(std::size_t, void*)). Это используется для создания объектов в выделенном "хранилище" или после malloc.

Важно! В этом случае деструктор нужно вызывать самостоятельно!
Функция resize

Изменяет размер контейнера так, чтобы он содержал n элементов.

Если n меньше текущего размера контейнера , содержимое сокращается до первых n элементов, удаляя все остальные (и уничтожая их).

Если n больше текущего размера контейнера , содержимое расширяется, вставляя в конце столько элементов, сколько необходимо для достижения размера n . Если указан val , новые элементы инициализируются как копии val , в противном случае они инициализируются значением.

Если n также больше, чем текущая вместимость контейнера, происходит автоматическое перераспределение выделенного пространства для хранения.
Функция for_each()

Функция принимает список в качестве входных данных и применяет пользовательскую функцию к каждому элементу этого списка. Это полезно, когда нам нужно выполнить одну и ту же операцию со всеми элементами списка.

Выше приведен пример, где мы используем функцию для удвоения всех чисел в массиве.
#вопросы_с_собеседований
Напишите базовую реализацию std::shared_ptr.

std::shared_ptr - умный указатель, который позволяет разделять владение объектом между несколькими shared_ptr. Когда последний shared_ptr уничтожается, он автоматически удаляет объект.
Подвох с указателями на Default Subobject

Пожалуй, любой С++ разработчик на Unreal Engine имел дело с созданием Default Subobject в конструкторе. Через этот механизм, в частности, создаются компоненты по-умолчанию для акторов. Казалось бы, какие нюансы могут быть связаны с использованием такого стандартного функционала?

Смотреть статью
Находим обратный массив в C++

Один из самых быстрых вариантов обратного массива в C++ предполагает использование двух указателей для итерации по массиву. Это обеспечивает линейную сложность O(n) и примерное время выполнения алгоритма равное O(n/2).

Здесь мы создаем две переменные-указатели, start и end, которые начинаются с первого и последнего элемента соответственно. Затем мы проходим по массиву в цикле while, меняя местами элементы и увеличивая указатель start и уменьшая указатель end на каждой итерации.
Узнаем количество цифр в строке

Программа запрашивает у пользователя строку и с помощью цикла for проходится по каждому символу строки. Если символ является цифрой (используя функцию isdigit), увеличивается счетчик (count). В конце программы выводится количество цифр в строке.
Многопоточность на C++

Поток исполнения - независимая последовательность выполнения инструкций внутри одного процесса с общей памятью, но собственными регистрами и стеком.

Смотреть статью
Генерируем пароли с помощью C++

Эта программа создает константы для допустимых символов в пароле и для длины пароля. Затем она инициализирует генератор случайных чисел и генерирует пять случайных паролей.

Каждый пароль формируется путем выбора случайного символа из всего набора символов. Этот процесс повторяется до достижения желаемой длины пароля.
Генерируем X509 сертификат с OpenSSL C++

В данной статье автор рассказывает, как работать с X509 сертификатом используя OpenSSL 3.0.0 в С++, начиная от генерации своего сертификата и заканчивая его валидацией.

Смотреть статью
Узнаем версию C++

Можно использовать макрос __cplusplus для определения версии C++. Например, если препроцессор увидит значение __cplusplus, равное 199711L, это означает, что используется C++98; значение 201103L указывает на C++11 и так далее.
Функции вместимости в строках

1. capacity() - функция возвращает ёмкость памяти, выделенную для строки, которая может быть равной или больше, чем размер самой строки. Дополнительное пространство выделяется таким образом, чтобы при добавлении новых символов в строку операции могли выполняться эффективно.
2. resize() - функция изменяет размер строки, его можно увеличивать или уменьшать.
3. length() - функция возвращает длину строки.
4. shrink_to_fit() - функция уменьшает ёмкость памяти строки, делает ее равной минимально возможной. Эта операция полезна для экономии дополнительной памяти, когда мы уверены, что больше не нужно добавлять символы.
SDL 2.0

Кроссплатформенная 2D-библиотека для написания приложений (как правило, игр). Поддерживает Windows, Mac OS, Linux, Android, Windows Mobile, iOS. Характеризуется быстротой, надёжностью и лёгкостью в эксплуатации. Также в SDL реализованы профессиональные инструменты, предназначенные для работы со звуком, что является большим плюсом при реализации крупных проектов.

Остаётся добавить, что библиотека хорошо интегрируется с OpenGL и комбинируется с wxWidgets.

https://www.libsdl.org/
Алгоритм gcd

Используется для нахождения НОД двух чисел. Он принимает два значения одного типа данных в качестве аргументов и возвращает их НОД.

Временная сложность: O(log(max(value1, value2)))).
Чтение и отображение изображения в OpenCV с использованием C ++

Как мы видим нам потребовалось включить пространства имен cv, которое содержит все функции, классы и структуры данных OpenCV.

Более подробное описания кода можно найти здесь.
Удаление указателя NULL

Удаление указателя NULL не приводит к каким-либо изменениям и ошибкам.
Проверяем, содержит ли строка только буквы в C++

Мы можем использовать регулярное выражение, чтобы проверить, содержит ли строка только буквы.

Начиная с C++11, мы можем использовать std::regex_match для сопоставления последовательности с регулярным выражением.