Оператор назначения для метки goto идентифицируется какой меткой?
Anonymous Quiz
5%
*
15%
@
71%
:
8%
$
🤔 #дайджест познавательных роликов по С++
🔸 C++ базовый курс MIPT — лекции по программированию на C++ в бакалавриате МФТИ
🔸 Перепрограммируйте свой мозг с помощью test driven на C++ — как работать, как совершенствоваться и как повысить производительность
🔸 Масштабируемая векторизация в RISCV — про основы векторизации вообще и на примере простой задачи про фиксированную векторизацию на интринсиках AVX
🔸 Семантические процессы в C++ — описание взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка
🔸 TDD Revisited — ключевые ошибки разработки, основанные на тестировании и набор принципов, которые позволяют писать хорошие модульные тесты
🔸 C++ базовый курс MIPT — лекции по программированию на C++ в бакалавриате МФТИ
🔸 Перепрограммируйте свой мозг с помощью test driven на C++ — как работать, как совершенствоваться и как повысить производительность
🔸 Масштабируемая векторизация в RISCV — про основы векторизации вообще и на примере простой задачи про фиксированную векторизацию на интринсиках AVX
🔸 Семантические процессы в C++ — описание взаимодействующих семантических процессов в языке, как с точки зрения внутренностей компилятора, так и с точки зрения стандарта языка
🔸 TDD Revisited — ключевые ошибки разработки, основанные на тестировании и набор принципов, которые позволяют писать хорошие модульные тесты
🔤 Азбука SQL в примерах. Часть 3. Обрабатываем результаты и делаем сложные запросы
Мы уже умеем довольно много, и наша база содержит полезную информацию. А еще она умеет проверять новые данные, когда мы их добавляем. Пора разобраться, как их обрабатывать, чтобы узнать из данных что-то интересное.
👉 Читать статью
👉 Часть 1
👉 Часть 2
Мы уже умеем довольно много, и наша база содержит полезную информацию. А еще она умеет проверять новые данные, когда мы их добавляем. Пора разобраться, как их обрабатывать, чтобы узнать из данных что-то интересное.
👉 Читать статью
👉 Часть 1
👉 Часть 2
Forwarded from Библиотека задач по C++ | тесты, код, задания
Библиотечный метод
Продемонстрируйте работу метода сортировки вставками по возрастанию. Для этого выведите состояние данного массива после каждой вставки на отдельных строках. Если массив упорядочен изначально, не нужно ничего выводить.
Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 100) — количество элементов в массиве. На второй строке задан сам массив: последовательность натуральных чисел, не превышающих 10^9.
Формат выходных данных:
В выходной файл выведите строки (по количеству вставок) по n чисел каждая.
Продемонстрируйте работу метода сортировки вставками по возрастанию. Для этого выведите состояние данного массива после каждой вставки на отдельных строках. Если массив упорядочен изначально, не нужно ничего выводить.
Формат входных данных:
На первой строке дано целое число n (1 ≤ n ≤ 100) — количество элементов в массиве. На второй строке задан сам массив: последовательность натуральных чисел, не превышающих 10^9.
Формат выходных данных:
В выходной файл выведите строки (по количеству вставок) по n чисел каждая.
std::find_if
Вот общий формат
std::find_if
— это стандартный алгоритм, предоставляемый библиотекой <algorithm>
. Этот алгоритм предназначен для поиска первого элемента в заданном диапазоне, который удовлетворяет заданному условию, определенному предикатом.Вот общий формат
std::find_if
:#include <algorithm>
template<class InputIt, class UnaryPredicate>
InputIt find_if(InputIt first, InputIt last, UnaryPredicate p);
first
и last
представляют диапазон элементов для поиска. first
указывает на начало диапазона, а last
указывает за его пределы.p
— это унарный предикат, то есть функция, принимающая один аргумент и возвращающая true, если элемент удовлетворяет условию, и false
в противном случае.Forwarded from Книги для C/C++ разработчиков
📚Smaller C: Lean Code for Small Machines (2021)
✍️Автор: Marc Loy
📃Страниц: 314
Для людей, которые хотят использовать самые маленькие микроконтроллеры или добиться максимальной производительности от более крупных, язык Си по-прежнему является лучшим вариантом. Эта практическая книга дает прочное основание знаний по Cи для всех, кто имеет дело с программированием микроконтроллеров. Вы изучите множество способов, с помощью которых Cи позволяет разработчикам и производителям добиваться больших результатов с помощью крошечных устройств.
Ссылка на книгу
✍️Автор: Marc Loy
📃Страниц: 314
Для людей, которые хотят использовать самые маленькие микроконтроллеры или добиться максимальной производительности от более крупных, язык Си по-прежнему является лучшим вариантом. Эта практическая книга дает прочное основание знаний по Cи для всех, кто имеет дело с программированием микроконтроллеров. Вы изучите множество способов, с помощью которых Cи позволяет разработчикам и производителям добиваться больших результатов с помощью крошечных устройств.
Ссылка на книгу
🤸🤸♂️ Механизм перезапускаемых последовательностей (Rseq) при работе с TCMalloc
В TCMalloc кэши для отдельных ядер процессора реализуются при помощи перезапускаемых последовательностей man rseq(2) под Linux. При помощи перезапускаемых последовательностей можно вплоть до завершения выполнять область памяти (атомарно, относительно других потоков, выполняющихся на том же ядре процессора), либо выходить из этого процесса, если ядро прервёт этот процесс, например, вытеснив его или прервавшись на обработку сигнала.
Если вы хотите организовать перезапуск системы при миграции с ядра на ядро или при вытеснении процесса, то наиболее общий случай такой операции можно оптимизировать (не переносить с ядра на ядро тот процесс, который уже выполняется), избегая атомарных операций. Можно оптимизировать и более редкий случай — вытеснение как таковое. В результате такого компромисса нужно обеспечить, чтобы на всех путях выполнения нашего кода поддерживались такие операции перезапуска. Вся последовательность, кроме окончательного сохранения в памяти, когда изменение фиксируется, должна быть приспособлена к перезапуску.
Продолжить
#туториал
В TCMalloc кэши для отдельных ядер процессора реализуются при помощи перезапускаемых последовательностей man rseq(2) под Linux. При помощи перезапускаемых последовательностей можно вплоть до завершения выполнять область памяти (атомарно, относительно других потоков, выполняющихся на том же ядре процессора), либо выходить из этого процесса, если ядро прервёт этот процесс, например, вытеснив его или прервавшись на обработку сигнала.
Если вы хотите организовать перезапуск системы при миграции с ядра на ядро или при вытеснении процесса, то наиболее общий случай такой операции можно оптимизировать (не переносить с ядра на ядро тот процесс, который уже выполняется), избегая атомарных операций. Можно оптимизировать и более редкий случай — вытеснение как таковое. В результате такого компромисса нужно обеспечить, чтобы на всех путях выполнения нашего кода поддерживались такие операции перезапуска. Вся последовательность, кроме окончательного сохранения в памяти, когда изменение фиксируется, должна быть приспособлена к перезапуску.
Продолжить
#туториал
Forwarded from Библиотека джависта | Java, Spring, Maven, Hibernate
👨💻🧩 Психология и ИТ: 17 личностных качеств, необходимых для успешной карьеры
В статье разберем, какие качества необходимы для успешного старта в IT-сфере.
Читать статью
#новость
В статье разберем, какие качества необходимы для успешного старта в IT-сфере.
Читать статью
#новость
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Библиотека cstdint
🧐 Что такое cstdint?
• cstdint — это библиотека в C++, предоставляющая набор типов данных для точного задания размера и формата целочисленных значений
🚀 Преимущества использования cstdint
• Портабельность: Гарантирует одинаковый размер типов на разных платформах
• Ясность кода: Позволяет явно указывать размер используемого типа
🧐 Что такое cstdint?
• cstdint — это библиотека в C++, предоставляющая набор типов данных для точного задания размера и формата целочисленных значений
🚀 Преимущества использования cstdint
• Портабельность: Гарантирует одинаковый размер типов на разных платформах
• Ясность кода: Позволяет явно указывать размер используемого типа
📚 std::exception — это базовый класс для всех стандартных исключений в C++
Почему стоит наследоваться от std::exception?
• Единообразие в обработке исключений: Когда вы наследуетесь от std::exception, ваш класс исключения приобретает интерфейс, который делает его совместимым с другими стандартными исключениями
• what() метод: std::exception предоставляет важный метод what(), который возвращает строковое представление исключения. Это позволяет вам предоставлять информативные сообщения об ошибке при обработке исключений
• Легкость в поддержке кода: Если вы используете сторонние библиотеки или фреймворки, они также могут ожидать обработку исключений, производных от std::exception
• Стандартные типы исключений: std::exception имеет несколько стандартных подклассов, таких как std::runtime_error, std::logic_error и другие. Вы можете использовать эти подклассы вместо базового std::exception, чтобы более точно определить характер ошибки
Почему стоит наследоваться от std::exception?
• Единообразие в обработке исключений: Когда вы наследуетесь от std::exception, ваш класс исключения приобретает интерфейс, который делает его совместимым с другими стандартными исключениями
• what() метод: std::exception предоставляет важный метод what(), который возвращает строковое представление исключения. Это позволяет вам предоставлять информативные сообщения об ошибке при обработке исключений
• Легкость в поддержке кода: Если вы используете сторонние библиотеки или фреймворки, они также могут ожидать обработку исключений, производных от std::exception
• Стандартные типы исключений: std::exception имеет несколько стандартных подклассов, таких как std::runtime_error, std::logic_error и другие. Вы можете использовать эти подклассы вместо базового std::exception, чтобы более точно определить характер ошибки
Forwarded from Библиотека задач по C++ | тесты, код, задания
В докладе автор в лёгкой форме рассказывает о C++, его применение, особенностях и всё это переправлено мемами😆
Антон Соснин — С++ в мемах
#junior
Антон Соснин — С++ в мемах
#junior
⚡ ️Разреженные структуры данных
В статье рассмотрены разреженные структуры данных
Разряженные структуры данных (sparse data structures) представляют собой специальные типы данных, предназначенные для эффективного хранения и обработки данных, в которых большинство элементов имеют некоторое стандартное или дефолтное значение, и только небольшое количество элементов отличается от этого значения
Рассматриваемые алгоритмы:
Sparse Array (Sparse Matrix)
Sparse List
Sparse Deque (sparque)
Sparse Set
Sparse Map
Разреженные структуры данных
В статье рассмотрены разреженные структуры данных
Разряженные структуры данных (sparse data structures) представляют собой специальные типы данных, предназначенные для эффективного хранения и обработки данных, в которых большинство элементов имеют некоторое стандартное или дефолтное значение, и только небольшое количество элементов отличается от этого значения
Рассматриваемые алгоритмы:
Sparse Array (Sparse Matrix)
Sparse List
Sparse Deque (sparque)
Sparse Set
Sparse Map
Разреженные структуры данных
Приведение типов в C++
1. static_cast
В общем тот же reinterpret_cast, только делает проверку во время компиляции на совместимость. Проверяет можем ли мы сделать downcasting типа, привести тип родителя к типу потомка. Когда заранее известно, что может быть только один тип потомка
2. dynamic_cast
Динамическое преобразование типов, когда информация о типе появляется только во время исполнения программы
3. reinterpret_cast
Сообщает, что в данном участке памяти лежат те или иные типы данных и он этого никак не проверяет. В данном случае программист сам решает
4. const_cast
Снимает const квалификатор. Если понадобился const_cast, то действительно пошло что-то не так и пытаемся снять константность
5. C-style cast
Замаскированное применение const_cast, static_cast, reinterpret_cast и их комбинаций. Применяются в следующем порядке
• const_cast
• static_cast
• static_cast + const_cast
• reinterpret_cast
• reinterpret_cast + const_cast
1. static_cast
В общем тот же reinterpret_cast, только делает проверку во время компиляции на совместимость. Проверяет можем ли мы сделать downcasting типа, привести тип родителя к типу потомка. Когда заранее известно, что может быть только один тип потомка
2. dynamic_cast
Динамическое преобразование типов, когда информация о типе появляется только во время исполнения программы
3. reinterpret_cast
Сообщает, что в данном участке памяти лежат те или иные типы данных и он этого никак не проверяет. В данном случае программист сам решает
4. const_cast
Снимает const квалификатор. Если понадобился const_cast, то действительно пошло что-то не так и пытаемся снять константность
5. C-style cast
Замаскированное применение const_cast, static_cast, reinterpret_cast и их комбинаций. Применяются в следующем порядке
• const_cast
• static_cast
• static_cast + const_cast
• reinterpret_cast
• reinterpret_cast + const_cast
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
🔍 Что такое std::thread?
std::thread предоставляет собой интерфейс для взаимодействия с системными потоками
💡Что можно запустить?
• Любой функтор можно превратить в поток
💡Что можно передать при запуске потока?
• Можно передать любое количество параметров, но стоит учитывать, что все они будут копироваться
• Чтобы передать ссылку, её стоит обернуть в std::ref или std::cref
💡Что можно сделать с потоком?
• После создания потока мы можем с ним делать две вещи: вызвать join и ждать завершение потока или вызвать detach, тогда поток просто будет работать (пока сам не завершится)
💡Начиная с C++20 появился std::jthread
• Это тоже самое, но в деструкторе будет вызываться join
std::thread предоставляет собой интерфейс для взаимодействия с системными потоками
💡Что можно запустить?
• Любой функтор можно превратить в поток
💡Что можно передать при запуске потока?
• Можно передать любое количество параметров, но стоит учитывать, что все они будут копироваться
• Чтобы передать ссылку, её стоит обернуть в std::ref или std::cref
💡Что можно сделать с потоком?
• После создания потока мы можем с ним делать две вещи: вызвать join и ждать завершение потока или вызвать detach, тогда поток просто будет работать (пока сам не завершится)
💡Начиная с C++20 появился std::jthread
• Это тоже самое, но в деструкторе будет вызываться join
🤔 Что такое structural bindings?
• Данная фитча появилась в C++17
• Это механизм, который позволяет нам декомпозировать структуры данных, такие как tuple, pair, и даже свои пользовательские структуры, на более простые именованные переменные
• Это делает код более читаемым, компактным и легко поддерживаемым
🌐 Ссылки
• Восемь возможностей C++17, которые должен применять каждый разработчик
• Structured binding declaration
• Structured binding in C++ https://habr.com/ru/articles/343622/
• Данная фитча появилась в C++17
• Это механизм, который позволяет нам декомпозировать структуры данных, такие как tuple, pair, и даже свои пользовательские структуры, на более простые именованные переменные
• Это делает код более читаемым, компактным и легко поддерживаемым
🌐 Ссылки
• Восемь возможностей C++17, которые должен применять каждый разработчик
• Structured binding declaration
• Structured binding in C++ https://habr.com/ru/articles/343622/