📖 ТОП-10 книг, без которых не обойтись ни одному программисту
Мы подготовили для вас подборку из 10 книг, без которых не обойтись ни одному профессионалу в IT. Эти книги станут для вас настольными на долгие годы.
🔗 Основной сайт
🔗 Зеркало
Мы подготовили для вас подборку из 10 книг, без которых не обойтись ни одному профессионалу в IT. Эти книги станут для вас настольными на долгие годы.
🔗 Основной сайт
🔗 Зеркало
std::atomic_flag::wait
std::atomic_flag::wait — это метод класса std::atomic_flag, который блокирует выполнение потока, пока атомарный флаг не будет равен заданному значению.
В этом примере есть два потока — t1 и t2, каждый из которых ждет, пока атомарный флаг flag не будет очищен. Когда flag очищается, соответствующий поток переходит в режим выполнения, выводя сообщение "Thread executing".
Результатом работы данной программы является вывод сообщений "Thread waiting" до изменения flag на false и сообщений "Thread executing" после его изменения.
#код
std::atomic_flag::wait — это метод класса std::atomic_flag, который блокирует выполнение потока, пока атомарный флаг не будет равен заданному значению.
В этом примере есть два потока — t1 и t2, каждый из которых ждет, пока атомарный флаг flag не будет очищен. Когда flag очищается, соответствующий поток переходит в режим выполнения, выводя сообщение "Thread executing".
Результатом работы данной программы является вывод сообщений "Thread waiting" до изменения flag на false и сообщений "Thread executing" после его изменения.
#код
Очередной #дайджест по C++:
✍️ Самый быстрый и безопасный PNG декодер в мире
Декодер изображений PNG из стандартной библиотеки языка программирования Wuffs работает в 1.22–2.75 раза быстрее, чем libpng, C-библиотеки libspng, lodepng и stb_image, а также самые популярные библиотеки для работы с PNG на Go и Rust.
✍️ Rust моей мечты — несостоявшийся язык
Пост о Rust и его разнице с С++.
✍️ Работа с void* в стиле C++
Передача указателя на набор полей примитивных типов, расположенных в определённом порядке, — широко используемый паттерн. Так передаются указатели на структуры и объекты, массивы, файловые и сетевые буферы, данные в общей памяти и специальные типы (к примеру, массивы виртуальных функций).
✍️ Как считать токены для GPT-3/GPT-4
Автор разработал возможность подсчета токенов на С++, которую разработчики реализовали только для JS и Python.
✍️ С++ как скриптовый язык на примере простой игры
Немного про игровые движки и динамическое связывание.
✍️ Самый быстрый и безопасный PNG декодер в мире
Декодер изображений PNG из стандартной библиотеки языка программирования Wuffs работает в 1.22–2.75 раза быстрее, чем libpng, C-библиотеки libspng, lodepng и stb_image, а также самые популярные библиотеки для работы с PNG на Go и Rust.
✍️ Rust моей мечты — несостоявшийся язык
Пост о Rust и его разнице с С++.
✍️ Работа с void* в стиле C++
Передача указателя на набор полей примитивных типов, расположенных в определённом порядке, — широко используемый паттерн. Так передаются указатели на структуры и объекты, массивы, файловые и сетевые буферы, данные в общей памяти и специальные типы (к примеру, массивы виртуальных функций).
✍️ Как считать токены для GPT-3/GPT-4
Автор разработал возможность подсчета токенов на С++, которую разработчики реализовали только для JS и Python.
✍️ С++ как скриптовый язык на примере простой игры
Немного про игровые движки и динамическое связывание.
Про какой учебный проект вы рассказывали/показывали его на первом собеседовании?
#интерактив
#интерактив
move constructor
Move-конструктор — это специальный конструктор, который позволяет эффективно перемещать ресурсы из одного объекта в другой, без необходимости копирования данных. Он используется для реализации семантики перемещения (move semantics) и оптимизации работы с временными объектами.
Move-конструктор принимает rvalue ссылку (&&) на объект, который будет перемещен, и выполняет простое копирование указателей на данные, а не их фактическое копирование.
Использование move-конструктора позволяет избежать лишних копирований данных и повысить производительность при работе с большими или ресурсоемкими объектами.
#код
Move-конструктор — это специальный конструктор, который позволяет эффективно перемещать ресурсы из одного объекта в другой, без необходимости копирования данных. Он используется для реализации семантики перемещения (move semantics) и оптимизации работы с временными объектами.
Move-конструктор принимает rvalue ссылку (&&) на объект, который будет перемещен, и выполняет простое копирование указателей на данные, а не их фактическое копирование.
Использование move-конструктора позволяет избежать лишних копирований данных и повысить производительность при работе с большими или ресурсоемкими объектами.
#код
Как работает оператор new в C++ и почему используется именно этот оператор для выделения динамической памяти?
Оператор new используется в C++ для выделения динамической памяти (heap memory), которая выделяется во время выполнения программы. При его вызове, сначала выделяется необходимое количество памяти из операционной системы, а затем возвращается указатель на эту область памяти.
При исполнении оператора new происходит следующее:
1. Сначала он выделяет память в размере, указанном в аргументе оператора или размере типа данных, на который указывает указатель.
2. Затем он вызывает конструктор для создания объекта в выделенной области памяти.
3. Возвращает указатель на выделенную память.
В данном примере оператор new выделяет память под объект класса MyClass и вызывает его конструктор. Оператор delete используется для освобождения ранее выделенной памяти.
#вопросы_с_собеседований
Оператор new используется в C++ для выделения динамической памяти (heap memory), которая выделяется во время выполнения программы. При его вызове, сначала выделяется необходимое количество памяти из операционной системы, а затем возвращается указатель на эту область памяти.
При исполнении оператора new происходит следующее:
1. Сначала он выделяет память в размере, указанном в аргументе оператора или размере типа данных, на который указывает указатель.
2. Затем он вызывает конструктор для создания объекта в выделенной области памяти.
3. Возвращает указатель на выделенную память.
В данном примере оператор new выделяет память под объект класса MyClass и вызывает его конструктор. Оператор delete используется для освобождения ранее выделенной памяти.
#вопросы_с_собеседований
Что выведет код?
Anonymous Quiz
11%
(42, 1337)
15%
42, 1337
26%
42
5%
1337
31%
Compiler Error
13%
Поведение не определено
Передача адреса переменной в функцию в Си
По умолчанию параметры передаются по значению, то есть копируются. В десятиминутном видео разобраны основы этой логики.
Смотреть видео
По умолчанию параметры передаются по значению, то есть копируются. В десятиминутном видео разобраны основы этой логики.
Смотреть видео