#вопросы_с_собеседований
Для чего используется ключевое слово volatile?
Для указания компилятору, что доступ к переменной может осуществляться из мест, неподконтрольных ему. А как следствие, что работу с данной переменной не нужно подвергать разного рода оптимизациям.
Т.е. если volatile присутствует в каком-то условии, которое не меняется со временем, то компилятор может оптимизировать его, чтобы избежать ненужных проверок, при использовании volatile компилятор скорее всего не будет этого делать.
Для чего используется ключевое слово volatile?
Для указания компилятору, что доступ к переменной может осуществляться из мест, неподконтрольных ему. А как следствие, что работу с данной переменной не нужно подвергать разного рода оптимизациям.
Т.е. если volatile присутствует в каком-то условии, которое не меняется со временем, то компилятор может оптимизировать его, чтобы избежать ненужных проверок, при использовании volatile компилятор скорее всего не будет этого делать.
Claude начал банить россиян по паспорту
Anthropic массово просит пройти верификацию по документам. После российского загранпаспорта аккаунт блокируют практически сразу. Апелляции не помогают.
А в CatCode паспорт никто не спросит.
CatCode - десктопный ИИ-агент для разработки. Внутри Claude Fable, GPT, Grok и еще 10+ моделей в одной подписке. Модель можно выбрать вручную или доверить умному свитчеру: рутину он отдаст простой нейросети, сложную задачу - сильной, так лимит тратится медленнее.
Оплата российской картой или СБП, работает без VPN. Первые задачи бесплатно - просто зарегистрируйся и попробуй.
Перенеси проекты и не бойся банов: catcode.dev
Anthropic массово просит пройти верификацию по документам. После российского загранпаспорта аккаунт блокируют практически сразу. Апелляции не помогают.
А в CatCode паспорт никто не спросит.
CatCode - десктопный ИИ-агент для разработки. Внутри Claude Fable, GPT, Grok и еще 10+ моделей в одной подписке. Модель можно выбрать вручную или доверить умному свитчеру: рутину он отдаст простой нейросети, сложную задачу - сильной, так лимит тратится медленнее.
Оплата российской картой или СБП, работает без VPN. Первые задачи бесплатно - просто зарегистрируйся и попробуй.
Перенеси проекты и не бойся банов: catcode.dev
Кодогенератор Waffle++ для C++
Кодогенератор это программа, которая на основе исходного кода или какого-нибудь файла настроек генерирует вспомогательный код, который потом компилируется вместе с исходным кодом.
Смотреть статью
Кодогенератор это программа, которая на основе исходного кода или какого-нибудь файла настроек генерирует вспомогательный код, который потом компилируется вместе с исходным кодом.
Смотреть статью
Сonstexpr
Допустим, у вас есть выражение, значение которого нужно вычислить и которое не будет меняться после этого. Вы можете вычислить значение заранее и использовать его как макрос. Или, как предлагает C++11, вы можете использовать constexpr.
Программисты сокращают время работы программы насколько возможно. Например, некоторые операции перекладываются на компилятор.
Код выше — довольно частый пример использования constexpr.
Так как мы объявили функцию вычисления чисел Фибоначчи как constexpr, компилятор вычислит значение fib(20) во время компиляции. Тогда после компиляции строка const long long bigval = fib(20); будет заменена на const long long bigval = 2432902008176640000.
Допустим, у вас есть выражение, значение которого нужно вычислить и которое не будет меняться после этого. Вы можете вычислить значение заранее и использовать его как макрос. Или, как предлагает C++11, вы можете использовать constexpr.
Программисты сокращают время работы программы насколько возможно. Например, некоторые операции перекладываются на компилятор.
Код выше — довольно частый пример использования constexpr.
Так как мы объявили функцию вычисления чисел Фибоначчи как constexpr, компилятор вычислит значение fib(20) во время компиляции. Тогда после компиляции строка const long long bigval = fib(20); будет заменена на const long long bigval = 2432902008176640000.
Алгоритм unique_copy
std::unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [первый, последний). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, в котором последовательно присутствует один и тот же элемент.
Но что, если мы не хотим изменять исходный диапазон, а просто хотим, чтобы результат std::unique был скопирован в другой контейнер, для этого у нас есть другая функция std::unique_copy() . При этом копируется только первый элемент из каждой последовательной группы эквивалентных элементов в диапазоне [first, last).
std::unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [первый, последний). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, в котором последовательно присутствует один и тот же элемент.
Но что, если мы не хотим изменять исходный диапазон, а просто хотим, чтобы результат std::unique был скопирован в другой контейнер, для этого у нас есть другая функция std::unique_copy() . При этом копируется только первый элемент из каждой последовательной группы эквивалентных элементов в диапазоне [first, last).
Принцип YAGNI
Принцип YAGNI (You Ain't Gonna Need It), который также известен как «Не добавляйте функциональность, пока она не понадобится».
В контексте С++ это означает, что при проектировании и разработке программы вы должны избегать лишней сложности, излишних функций и структур данных, которые не требуются на текущем этапе разработки. Вместо этого фокусируйтесь на решении актуальных задач и добавлении только тех функций, которые необходимы для выполнения текущих требований.
Этот принцип помогает избежать излишней сложности кода, упростить его поддержку и обеспечить более гибкую архитектуру, которая может легко адаптироваться к будущим изменениям и требованиям.
#для_продвинутых
Принцип YAGNI (You Ain't Gonna Need It), который также известен как «Не добавляйте функциональность, пока она не понадобится».
В контексте С++ это означает, что при проектировании и разработке программы вы должны избегать лишней сложности, излишних функций и структур данных, которые не требуются на текущем этапе разработки. Вместо этого фокусируйтесь на решении актуальных задач и добавлении только тех функций, которые необходимы для выполнения текущих требований.
Этот принцип помогает избежать излишней сложности кода, упростить его поддержку и обеспечить более гибкую архитектуру, которая может легко адаптироваться к будущим изменениям и требованиям.
#для_продвинутых
std::weak_ptr
Использование
#для_начинающих
std::weak_ptr в C++ это часть стандартной библиотеки C++, которая используется для работы с умными указателями (smart pointers) и предназначена для решения проблемы циклических ссылок (cyclic references), которая может возникать при использовании std::shared_ptr.Использование
std::weak_ptr полезно в ситуациях, где существует потенциальная циклическая зависимость между объектами, и вы хотите избежать утечек памяти, связанных с этими зависимостями.#для_начинающих
MXNet
MXNet — это высокопроизводительная библиотека глубокого обучения с открытым исходным кодом, поддерживающая различные языки программирования, включая C++. Она предлагает широкий набор функций для создания, обучения и развертывания нейронных сетей.
#для_продвинутых
MXNet — это высокопроизводительная библиотека глубокого обучения с открытым исходным кодом, поддерживающая различные языки программирования, включая C++. Она предлагает широкий набор функций для создания, обучения и развертывания нейронных сетей.
#для_продвинутых
Veles
Veles — это высокопроизводительная библиотека для параллельного программирования на C++, разработанная Яндексом. Она предназначена для упрощения разработки высокопроизводительных приложений, использующих многоядерные процессоры и другие аппаратные ускорители.
#для_продвинутых
Veles — это высокопроизводительная библиотека для параллельного программирования на C++, разработанная Яндексом. Она предназначена для упрощения разработки высокопроизводительных приложений, использующих многоядерные процессоры и другие аппаратные ускорители.
#для_продвинутых
audioFlux
audioFlux — это библиотека C++ с открытым исходным кодом для работы со звуком. Она предоставляет простой и удобный интерфейс для выполнения различных задач, связанных с обработкой аудио.
#для_продвинутых
audioFlux — это библиотека C++ с открытым исходным кодом для работы со звуком. Она предоставляет простой и удобный интерфейс для выполнения различных задач, связанных с обработкой аудио.
#для_продвинутых
Google вновь ограничил россиянам доступ к Gemini
Уже несколько дней на сайтах мониторинга продолжаются жалобы пользователей. Похоже, Google научился распознавать регион - не спасает даже VPN.
А в CatCode все топовые нейросети доступны без VPN.
CatCode - десктопный ИИ-агент для разработки. Внутри Claude Fable, GPT, Grok и еще 10+ моделей в одной подписке. Модель можно выбрать вручную или доверить умному свитчеру: рутину он отдаст простой нейросети, сложную задачу - сильной, так лимит тратится медленнее.
Оплата российской картой или СБП, работает без VPN и верификации. Первые задачи бесплатно - просто зарегистрируйся и попробуй.
Перенеси проекты туда, где не ограничат доступ: catcode.dev
Уже несколько дней на сайтах мониторинга продолжаются жалобы пользователей. Похоже, Google научился распознавать регион - не спасает даже VPN.
А в CatCode все топовые нейросети доступны без VPN.
CatCode - десктопный ИИ-агент для разработки. Внутри Claude Fable, GPT, Grok и еще 10+ моделей в одной подписке. Модель можно выбрать вручную или доверить умному свитчеру: рутину он отдаст простой нейросети, сложную задачу - сильной, так лимит тратится медленнее.
Оплата российской картой или СБП, работает без VPN и верификации. Первые задачи бесплатно - просто зарегистрируйся и попробуй.
Перенеси проекты туда, где не ограничат доступ: catcode.dev
std::scoped_lock для нескольких мьютексовВ C++17 был представлен
std::scoped_lock, который позволяет одновременно захватывать несколько мьютексов, гарантируя отсутствие взаимных блокировок (deadlocks).• Этот класс позволяет безопасно и одновременно захватывать несколько мьютексов. В отличие от использования std::lock_guard, который захватывает один мьютекс, std::scoped_lock предотвращает взаимные блокировки, которые могут возникнуть при попытке захвата нескольких мьютексов в произвольном порядке.• std::scoped_lock полезен в ситуациях, когда нужно гарантировать атомарность операций над несколькими разделяемыми ресурсами, минимизируя риск deadlock'ов.• При выходе из области видимости, std::scoped_lock автоматически отпускает все захваченные мьютексы, обеспечивая безопасное управление ресурсами.Please open Telegram to view this post
VIEW IN TELEGRAM