TGViewer
Channel Public Channel
Senior C++ Developer

Senior C++ Developer

@seniorcpp

Изучаем C++.

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

РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba
Subscribers
11.6K
Photos
1.5K
Videos
3
Links
640

Showing posts older than #2145 · Back to latest

Older Posts 20 shown
Post #2144 2.34K
Декларатор ссылки lvalue: &

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

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

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

В примере демонстрируется декларатор ссылки путем объявления объекта Person и ссылки на этот объект. Поскольку rFriend является ссылкой на myFriend, при обновлении любой из этих переменных изменяется один и тот же объект.
Post #2142 2.07K
Метод crbegin

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

Подробнее можно почитать здесь.
Post #2139 2.19K
Алгоритм forward_list::before_begin()

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

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

Подробнее можно почитать здесь.
Post #2137 2.23K
Curiously recurring template pattern (CRTP)

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

#для_начинающих
Post #2136 2.3K
libusb

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

#для_продвинутых
Post #2135 2.4K
Метод back()

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

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

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

#для_продвинутых
Post #2134 2.25K
std::is_floating_point_v

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

#для_начинающих
Post #2131 2.4K
RCU

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

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

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

Смотреть статью
Post #2128 2.21K
libcurl

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

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

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

#для_продвинутых
Post #2127 2.25K
Инкремент и декремент

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

Инкремент:

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

Декремент:

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

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

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

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

#для_начинающих
Post #2123 2.2K
Алгоритм IOTA

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

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

#для_начинающих
Post #2122 2.36K
Алгоритм adjacent_find()

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

#для_продвинутых
Post #2121 2.61K
Функция map::at()

Функция map::at() в C++ используется для доступа к элементу по указанному ключу в структуре данных std::map.
std::map — это контейнер, который реализует ассоциативный массив, где каждому ключу соответствует значение. map::at() предоставляет безопасный способ доступа к элементам std::map, так как она генерирует исключение в случае отсутствия указанного ключа в отображении.

Использование map::at() рекомендуется в случаях, когда вы хотите обеспечить безопасный доступ к элементам std::map и управлять исключениями при отсутствии ключа.

#для_начинающих
Post #2120 2.59K
std::atomic_flag::wait

std::atomic_flag::wait является частью стандартной библиотеки C++ и используется для ожидания, пока флаг std::atomic_flag станет равным clear, и затем устанавливает его в set. Это может быть полезно для синхронизации между потоками.

Вот общий синтаксис std::atomic_flag::wait:

void wait(bool clear_val = true) const;

clear_val
— это булевое значение, которое указывает, должен ли флаг быть установлен в clear после ожидания (по умолчанию true).

#для_продвинутых
Post #2118 2.02K
Решето Эратосфена

Решето Эратосфена — это алгоритм для нахождения всех простых чисел в заданном диапазоне.

Этот код определяет функцию sieveOfEratosthenes, которая находит все простые числа в диапазоне от 2 до n. Он использует булевый вектор isPrime, чтобы отмечать числа как простые или составные, и затем выводит список простых чисел.

Просто скопируйте этот код в файл с расширением .cpp, скомпилируйте его и выполните. После ввода верхней границы диапазона, программа выведет все простые числа в этом диапазоне.

#для_начинающих
Post #2116 2.11K
Почленное копирование

Почленное (посточленное) копирование в C++ означает копирование значений одного объекта в другой объект с сохранением их структуры. Это может быть полезно, например, при копировании элементов массива, элементов контейнера (например, вектора), или при копировании полей одного объекта в другой.

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

#для_продвинутых
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →