Senior C++ Developer
12.9K subscribers
1.28K photos
3 videos
586 links
№ 4931128893
Изучаем C++.

По вопросам сотрудничества: @adv_and_pr
Download Telegram
Функция ptsname()

Функция ptsname() возвращает имя подчиненного псевдотерминального устройства, соответствующего главному устройству, на которое ссылается файловый дескриптор fd.

Функция ptsname_r() является реентерабельным эквивалентном ptsname(). Она сохраняет имя устройства подчинённого псевдо-терминала в виде строки (завершающейся null) в буфер, указанный в buf. В аргументе buflen задаётся количество байт, доступных в buf.

#для_начинающих
Функция div()

Функция div() вычисляет величину numerator/denominator и возвращает частное и остаток в структуре div_t, которая содержит два целочисленных поля (в неопределённом порядке) quot и rem. Частное округляется до ближайшего нуля. Результат равняется quot*denominator+rem = numerator.

Функции ldiv(), lldiv() и imaxdiv() выполняют эту же функцию, деля числа соответствующего типа и возвращая результат в структуре с соответствующим именем, всегда с полями quot и rem того же типа, что и аргументы функции.

#для_начинающих
Алгоритм random_shuffle

Он случайным образом переставляет элементы в диапазоне [первый, последний).

Алгоритм меняет значение каждого элемента на какой-либо другой случайно выбранный элемент.

Про различия между shuffle и random_shuffle можно почитать здесь.
Узнаем размер файла с помощью C++

В этом примере мы открываем файл example.txt с помощью ifstream, перемещаем указатель на конец файла с помощью функции seekg, а затем получаем текущую позицию (размер файла) с помощью функции tellg. Результат выводится на экран.
#вопросы_с_собеседований
Что выведет код сверху?

Ответ:
10 99 40 99

В этой программе мы меняем местами определенные значения в двух векторах с помощью iter_swap.
Видеоуроки по созданию игры на C++

Серия видео, в которой автор по шагам рассказывает, как написать свою игру на C++.

Смотреть статью
Преобразование списка в массив в C++

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

Другой способ преобразование можно найти здесь.
#вопросы_с_собеседований
Какие специальные функции-члены может генерировать сам компилятор? Напишите их сигнатуру?

Ответ:
Компилятор может сам генерировать шесть функций.

• Конструктор по умолчанию;
Object();
• деструктор;
~Object();
• копирующий конструктор;
Object(const Object& oth);
• оператор копирующего присваивания;
Object& operator=(const Object& oth);
• перемещающий конструктор;
Object(Object&& oth);
• оператор перемещающего присваивания;
Object& operator=(Object&& oth);
Алгоритм compare

Если вызывающая строка меньше строки s, то функция возвращает -1 (отрицательное значение). Если вызывающая строка больше строки s, функция возвращает 1 (положительное значение). Если две строки равны, функция возвращает 0.

Подробнее про алгоритм можно почитать здесь.
Удаление всех вхождений элемента в массив

В этом методе сдвиньте нецелевой элемент в левую сторону.

• Проверьте, является ли текущий элемент целевым элементом или нет.
• Если это целевой элемент, увеличьте переменную cnt.
• После этого элемента все нецелевые элементы сдвинутся влево с промежутком (n-cnt).

Временная сложность: O(n)
Сложность пространства: O(1)

На картинке приведена программа на C ++ для удаления всех вхождений элемента из массива с использованием оптимизированного подхода.
Туториал по Unreal Engine: C+

Blueprints — очень популярный способ создания геймплея в Unreal Engine 4. Однако если вы уже давно программируете и предпочитаете код, то вам идеально подойдёт C++. С помощью C++ можно даже вносить изменения в движок и создавать собственные плагины.

Смотреть статью
Быстрое нахождениe остатка от деления больших чисел для делителей специального вида

Смотреть статью
Алгоритм reverse_copy

Алгоритм копирует элементы из заданного диапазона, но в обратном порядке.

Принимает три параметра. Первые два параметра — это диапазон копируемых элементов, а третий параметр — начальная точка, из которой элементы копируются в обратном порядке.
Генерация случайных числе в C++

Чтобы сгенерировать случайное число используется функция rand(), которая размещается в библиотечном файле stdlib.h.

Функция возвращает случайное целочисленное значение, которое лежит в пределах от 0 до 32767.
Бьерн Страуструп: Почему я создал C++ (перевод)

Перевод интервью с Бьерном Страуструпом 2011 года, в котором он рассказывает как и почему он пришел к созданию языка программирования C++.

Смотреть видео
move constructor

Move-конструктор — это специальный конструктор, который позволяет эффективно перемещать ресурсы из одного объекта в другой, без необходимости копирования данных.
Он используется для реализации семантики перемещения (move semantics) и оптимизации работы с временными объектами.

Move-конструктор принимает rvalue ссылку (&&) на объект, который будет перемещен, и выполняет простое копирование указателей на данные, а не их фактическое копирование.

Использование move-конструктора позволяет избежать лишних копирований данных и повысить производительность при работе с большими или ресурсоемкими объектами.
Понимаем обычное дерево отрезков

Пусть у нас есть задача: поступают запросы двух видов для исходного массива. Первый вид - это замена конкретного элемента на другой. Второй - вычисление суммы/минимума или другой операции на диапазоне. Требуется обработать эти запросы.

Дерево отрезков решает эту задачу и позволяет обновить элемент, и дать ответ по диапазону за логарифмическое время O(logN). Сама структура данных строится за линейное время O(N). Затраты по памяти - 4N. Почему это так рассмотрим в конце статьи.

Смотреть статью
Алгоритм distance

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

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

Это приведет к следующему результату -
MyException caught
C++ Exception

Здесь what() - это открытый метод, предоставляемый классом исключений, и он был переопределен всеми дочерними классами исключений. Это возвращает причину исключения.