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

По вопросам сотрудничества: @adv_and_pr
Download Telegram
Алгоритм adjacent_find()

Алгоритм adjacent_find() выполняет поиск совпадающих смежных элементов внутри последовательности, заданной параметрами first и last, и возвращает итератор для первого элемента. Если ни одной такой смежной пары не обнаружено, возвращается значение end. Первая версия предназначена для поиска эквивалентных элементов. Вторая же позволяет задать собственный метод определения совпадающих элементов.

#для_продвинутых
Алгоритм IOTA

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

Таким образом, вы можете использовать std::iota для быстрой инициализации контейнеров последовательными значениями.

#для_начинающих
Метод difftime()

Метод difftime() используется для вычисления разницы между двумя временными точками, представленными в виде объектов time_t. Она возвращает разницу между двумя временами в секундах в виде числа с плавающей запятой (тип double).

#для_начинающих
Инкремент и декремент

Инкремент и декремент — это операции, которые увеличивают или уменьшают значение переменной на 1. Эти операции могут быть использованы как префиксные (применяются до изменения значения переменной) или постфиксные (применяются после изменения значения переменной).

Инкремент:

++ используется для увеличения значения переменной на 1.
Префиксный инкремент: ++x — увеличивает x на 1 и возвращает новое значение.
Постфиксный инкремент: x++ — возвращает текущее значение x, а затем увеличивает x на 1.

Декремент:

-- используется для уменьшения значения переменной на 1.
Префиксный декремент: --x — уменьшает x на 1 и возвращает новое значение.
Постфиксный декремент: x-- — возвращает текущее значение x, а затем уменьшает x на 1.

Инкремент и декремент полезны в циклах, при обработке массивов и для управления переменными, которые хранят счетчики и индексы.

#для_начинающих
libcurl

libcurl — это библиотека для работы с передачей данных по протоколу HTTP и другим сетевым протоколам. Она написана на языке C, но может быть использована в C++.

В этом коде мы выполняем GET-запрос по указанному URL и выводим ответ на стандартный вывод. Замените «https://example.com» на URL, по которому вы хотите выполнить запрос. Когда код запустится, он выполнит запрос и выведет ответ на экран.

Не забудьте включить библиотеку libcurl при компиляции вашего проекта и убедитесь, что она правильно настроена в вашей среде разработки.

#для_продвинутых
«Есть вопросы, на которые не ответит даже наниматель»: три истории о собеседованиях разработчиков на С++

Смотреть статью
RCU

RCU (Read-Copy-Update) — это техника синхронизации в многозадачных программах, предназначенная для обеспечения эффективного доступа к данным в условиях высокой параллельности. RCU позволяет одновременно выполнять чтение данных без блокировки и обновление данных, минимизируя при этом конфликты доступа.

В примере на картинке rcu_dereference используется для чтения данных без блокировки, а rcu_assign_pointer для обновления указателя на данные. Функция call_rcu используется для планирования освобождения старых данных после завершения работы с ними.

#для_продвинутых
C++23: четыре новых ассоциативных контейнера

Смотреть статью
std::is_floating_point_v

std::is_floating_point_v является переменной шаблона (template variable), предоставляемой стандартной библиотекой (начиная с C++17). Эта переменная используется для определения, является ли указанный тип данных числом с плавающей запятой.

#для_начинающих
Метод back()

Метод back() используется для получения ссылки на последний элемент строки (или контейнера, в общем случае). Он возвращает ссылку на последний символ строки, который можно использовать для чтения или записи. Если строка пуста, поведение не определено.

Код создает строку «Hello, World!» и использует back() для получения ссылки на последний символ ('!'). Затем он выводит этот символ, заменяет его на 'X' и выводит измененную строку.

Обратите внимание, что метод back() не проверяет, пуст ли контейнер. Поэтому, прежде чем использовать back(), рекомендуется проверить, что строка не пуста.

#для_продвинутых
libusb

libusb — это библиотека, предназначенная для взаимодействия с устройствами через USB. Она предоставляет программный интерфейс для работы с USB-устройствами на низком уровне. Если вы хотите использовать libusb в своем проекте на C++, вам нужно будет включить соответствующие заголовочные файлы и использовать функции из библиотеки.

#для_продвинутых
Curiously recurring template pattern (CRTP)

Curiously Recurring Template Pattern (CRTP) - это техника, используемая в C++, при которой класс наследуется от самого себя в качестве параметра шаблона. Эта техника позволяет создавать классы с доступом к своим собственным членам через наследование, что может быть полезно для реализации различных шаблонов проектирования и оптимизации кода.

#для_начинающих
Алгоритм forward_list::before_begin()

Алгоритм возвращает итератор, указывающий на позицию перед первым элементом forward_list.

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

Подробнее можно почитать здесь.
Метод crbegin

Возвращает постоянный обратный итератор, указывающий на последний элемент вектора (обратное начало). Он перемещается от последнего к первому элементу.

Подробнее можно почитать здесь.
Декларатор ссылки lvalue: &

Содержит адрес объекта, но синтаксически ведет себя подобно объекту.

Ссылку lvalue можно считать другим именем для объекта. Объявление ссылки lvalue состоит из необязательного списка спецификаторов, за которым следует декларатор ссылки. Ссылка должна быть инициализирована и не может быть изменена.

Любой объект, адрес которого можно преобразовать в некоторый тип указателя, можно также преобразовать в аналогичный ссылочный тип. Например, любой объект, адрес которого можно преобразовать в тип char *, можно также преобразовать в тип char &.

В примере демонстрируется декларатор ссылки путем объявления объекта Person и ссылки на этот объект. Поскольку rFriend является ссылкой на myFriend, при обновлении любой из этих переменных изменяется один и тот же объект.
CRYENGINE — мощная платформа для разработки игр в реальном времени на С++, созданная Crytek.

https://www.cryengine.com/
C++, ping и traceroute

Ping — утилита для проверки целостности и качества соединений в сетях на основе TCP/IP, а также обиходное наименование самого запроса

Смотреть статью
#вопросы_с_собеседований
Что дают разные модификаторы при наследовании?

Ответ:
Изменяют зону видимости членов базового класса.
При private наследовании protected и public члены становятся private. При protected наследовании public становится protected. А при public ничего не изменяется.