Юрий Грибов — Как правильно писать компараторы
Один из малоизвестных примеров undefined behavior в C/C++ это нарушение требований к функциям сравнения (компараторам). Компараторы широко используются в алгоритмах (std::sort, std::binary_search, и т.д.) и контейнерах (std::set, std::map) и встречаются как в C++, так и в C (qsort, bsearch). Компараторы должны удовлетворять некоторым аксиомам, которые в математике описываются понятием строгого слабого порядка (strict weak ordering). Эти аксиомы не интуитивны и в них легко ошибиться, о чем свидетельствует большое количество соответствующих багов в open source проектах. Современные тулчейны предоставляют средства для отслеживания таких ошибок. О них рассказано в докладе Юрия.
https://www.youtube.com/watch?v=NKn1pAoB2MM
#cpp #programming
👉 @cpp_lib
Один из малоизвестных примеров undefined behavior в C/C++ это нарушение требований к функциям сравнения (компараторам). Компараторы широко используются в алгоритмах (std::sort, std::binary_search, и т.д.) и контейнерах (std::set, std::map) и встречаются как в C++, так и в C (qsort, bsearch). Компараторы должны удовлетворять некоторым аксиомам, которые в математике описываются понятием строгого слабого порядка (strict weak ordering). Эти аксиомы не интуитивны и в них легко ошибиться, о чем свидетельствует большое количество соответствующих багов в open source проектах. Современные тулчейны предоставляют средства для отслеживания таких ошибок. О них рассказано в докладе Юрия.
https://www.youtube.com/watch?v=NKn1pAoB2MM
#cpp #programming
👉 @cpp_lib
YouTube
Юрий Грибов — Как правильно писать компараторы
Ближайшая конференция — C++ Russia 2025, 20—21 марта, Москва + online. Подробности и билеты: https://jrg.su/9Sszhd
— —
Один из малоизвестных примеров undefined behavior в C/C++ это нарушение требований к функциям сравнения (компараторам). Компараторы широко…
— —
Один из малоизвестных примеров undefined behavior в C/C++ это нарушение требований к функциям сравнения (компараторам). Компараторы широко…
⚡2👍1
Можно ли изменить состояние в const function в C++? Почему? Как?
В этом посте мы обсудим, почему вы можете захотеть изменить состояние в const-функции в C++, и как можно изменить состояние с помощью
https://bytesandlogs.me/can-you-change-state-in-const-function-in-cpp/
#cpp #programming
👉 @cpp_lib
В этом посте мы обсудим, почему вы можете захотеть изменить состояние в const-функции в C++, и как можно изменить состояние с помощью
const_cast
. Мы также обсудим, является ли использование const_cast
в кодовых базах C++ хорошей практикой.https://bytesandlogs.me/can-you-change-state-in-const-function-in-cpp/
#cpp #programming
👉 @cpp_lib
👍4🤣2🤷♂1
Media is too big
VIEW IN TELEGRAM
👍3🔥3🤡2❤1⚡1
I HAVE NO CONSTRUCTOR, AND I MUST INITIALIZE
Когда несколько лет назад я проходил первый курс по C++, меня учили, что при определенных обстоятельствах компилятор будет предоставлять некие конструкторы по умолчанию на случай, если мы не предоставим свои собственные. Любопытно было узнать больше, но в первую очередь меня интересовали такие случаи:
https://consteval.ca/2024/07/03/initialization/
#cpp #programming
👉 @cpp_lib
Когда несколько лет назад я проходил первый курс по C++, меня учили, что при определенных обстоятельствах компилятор будет предоставлять некие конструкторы по умолчанию на случай, если мы не предоставим свои собственные. Любопытно было узнать больше, но в первую очередь меня интересовали такие случаи:
struct T { /* ... */ };
T t;
T s{};
T r{arg1, arg2, ...};
https://consteval.ca/2024/07/03/initialization/
#cpp #programming
👉 @cpp_lib
consteval.ca
I Have No Constructor, and I Must Initialize | consteval
👍3
❓Хотите узнать, какой алгоритм сортировки быстрее и эффективнее? Присоединяйтесь к нашему открытому уроку!
Тема: Визуальное сравнение 4-5 алгоритмов сортировок.
Дата: 15 июля в 20:00 мск.
На занятии мы подробно рассмотрим два популярных алгоритма сортировки: Выбором и Пирамидальной. Разберём их по различным критериям, включая сложность, количество обменов, стабильность и адаптивность.
Мы напишем и сравним алгоритмы по их быстродействию. Этот урок идеально подходит для студентов, разработчиков и всех, кто хочет углубить свои знания в области алгоритмов сортировки.
🔥 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.
🔴 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cyflwx
Тема: Визуальное сравнение 4-5 алгоритмов сортировок.
Дата: 15 июля в 20:00 мск.
На занятии мы подробно рассмотрим два популярных алгоритма сортировки: Выбором и Пирамидальной. Разберём их по различным критериям, включая сложность, количество обменов, стабильность и адаптивность.
Мы напишем и сравним алгоритмы по их быстродействию. Этот урок идеально подходит для студентов, разработчиков и всех, кто хочет углубить свои знания в области алгоритмов сортировки.
🔥 Спикер Евгений Волосатов — программист баз данных и преподаватель с огромным и разнообразным опытом, автор статей и учебных программ по C#, Java, PHP.
🔴 Пройдите короткий тест прямо сейчас, чтобы посетить бесплатный урок: https://vk.cc/cyflwx
Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576
👍1
📕Introduction to C++ : 500+ Difficulty-Scaled Solved Programming Exercises.
George S. Tselikis (2023)
Эта книга предназначена в первую очередь для студентов, изучающих курс языка C++, для тех, кто хочет самостоятельно изучить язык C++, а также для программистов, имеющих опыт работы с C и желающих перейти на C++. Она также может оказаться полезной преподавателям курса С++, которые ищут поясняющие примеры программирования для добавления в свои лекции. Основное внимание в этой книге уделено прочному введению в язык C++ и знаниям программирования с помощью большого количества практических примеров и содержательных советов. Она включает более 500 упражнений и примеров постепенного усложнения, чтобы помочь читателю понять принципы C++ и увидеть, как концепции могут материализоваться в коде.
#cpp #programming
👉 @cpp_lib
George S. Tselikis (2023)
Эта книга предназначена в первую очередь для студентов, изучающих курс языка C++, для тех, кто хочет самостоятельно изучить язык C++, а также для программистов, имеющих опыт работы с C и желающих перейти на C++. Она также может оказаться полезной преподавателям курса С++, которые ищут поясняющие примеры программирования для добавления в свои лекции. Основное внимание в этой книге уделено прочному введению в язык C++ и знаниям программирования с помощью большого количества практических примеров и содержательных советов. Она включает более 500 упражнений и примеров постепенного усложнения, чтобы помочь читателю понять принципы C++ и увидеть, как концепции могут материализоваться в коде.
#cpp #programming
👉 @cpp_lib
👍7🥰3⚡2🔥1
Media is too big
VIEW IN TELEGRAM
Константин Владимиров — О денотации: разрешение имен и его пересмотр в C++23
Этот доклад — попытка сделать темную и мрачную область разрешения имен в C++ простой и ясной для практикующего программиста.
источник
#cpp #programming
👉 @cpp_lib
Этот доклад — попытка сделать темную и мрачную область разрешения имен в C++ простой и ясной для практикующего программиста.
источник
#cpp #programming
👉 @cpp_lib
👍5🤷♂2
This media is not supported in your browser
VIEW IN TELEGRAM
FTXUI
Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
https://github.com/ArthurSonzogni/FTXUI
#cpp #programming
👉 @cpp_lib
Простая кроссплатформенная библиотека C++ для пользовательских интерфейсов на базе терминала!
• Функциональный стиль
• Простой и элегантный синтаксис
• Создаваемые консольные UI поддерживают навигацию с помощью клавиатуры и мыши
• Поддержка UTF8
• Поддержка анимации
• Поддержка рисования
• Нет зависимостей
• Кроссплатформенность: Linux/MacOS, WebAssembly, Windows
https://github.com/ArthurSonzogni/FTXUI
#cpp #programming
👉 @cpp_lib
👍12😁3⚡2
CGAL
Библиотека алгоритмов вычислительной геометрии (CGAL) - это библиотека C++, цель которой - обеспечить легкий доступ к эффективным и надежным алгоритмам вычислительной геометрии.
https://github.com/CGAL/cgal
#cpp #programming
👉 @cpp_lib
Библиотека алгоритмов вычислительной геометрии (CGAL) - это библиотека C++, цель которой - обеспечить легкий доступ к эффективным и надежным алгоритмам вычислительной геометрии.
https://github.com/CGAL/cgal
#cpp #programming
👉 @cpp_lib
👍7
Библеотека CPR
C++ Requests - это простая обертка вокруг libcurl, вдохновленная отличным проектом Python Requests.
Несмотря на свое название, простой интерфейс libcurl - это еще не все, и ошибки, неправильное использование этого языка - частый источник ошибок и разочарований. Используя более выразительные языковые средства C++17 (или C++11, если вы используете cpr < 1.10.0), эта библиотека укладывает суть выполнения сетевых вызовов в несколько лаконичных идиом.
Вот быстрый GET-запрос:
https://github.com/libcpr/cpr
#cpp #programming
👉 @cpp_lib
C++ Requests - это простая обертка вокруг libcurl, вдохновленная отличным проектом Python Requests.
Несмотря на свое название, простой интерфейс libcurl - это еще не все, и ошибки, неправильное использование этого языка - частый источник ошибок и разочарований. Используя более выразительные языковые средства C++17 (или C++11, если вы используете cpr < 1.10.0), эта библиотека укладывает суть выполнения сетевых вызовов в несколько лаконичных идиом.
Вот быстрый GET-запрос:
#include <cpr/cpr.h>
int main(int argc, char** argv) {
cpr::Response r = cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"},
cpr::Authentication{"user", "pass", cpr::AuthMode::BASIC},
cpr::Parameters{{"anon", "true"}, {"key", "value"}});
r.status_code; // 200
r.header["content-type"]; // application/json; charset=utf-8
r.text; // JSON text string
return 0;
}
https://github.com/libcpr/cpr
#cpp #programming
👉 @cpp_lib
👍11
Media is too big
VIEW IN TELEGRAM
Безопасное копирование, перемещение и уничтожение объектов в современном C++ по правилу «все или ничего»
Какие конструкторы нужны классу C++? Какие он генерирует сам? Как насчет различных операторов присваивания? А деструктор? Как не отстрелить себе ногу и без труда ориентироваться в этих водах?
Это и многое другое мы рассмотрим в этом видео, которое расскажет нам о простом правиле, которому нужно следовать при реализации классов в современном C++, - правиле "все или ничего". Мы погрузимся в причины его существования и посмотрим, как оно облегчает нам жизнь.
источник
#cpp #programming
👉 @cpp_lib
Какие конструкторы нужны классу C++? Какие он генерирует сам? Как насчет различных операторов присваивания? А деструктор? Как не отстрелить себе ногу и без труда ориентироваться в этих водах?
Это и многое другое мы рассмотрим в этом видео, которое расскажет нам о простом правиле, которому нужно следовать при реализации классов в современном C++, - правиле "все или ничего". Мы погрузимся в причины его существования и посмотрим, как оно облегчает нам жизнь.
источник
#cpp #programming
👉 @cpp_lib
👍3🤷♂1
Как malloc сломала JPGLoader в Serenity, или Как выиграть в лотерее
Пару лет назад мне выпала возможность расследовать в SerenityOS интересный баг, связанный с декодированием изображений JPG, которые по какой-то причине при просмотре выглядели так, как вы видите выше.
Странно, не так ли? Похоже, будто просто перепутали RGB и BGR. При этом внесение в JPGLoader.cpp следующего изменения:
https://habr.com/ru/companies/ruvds/articles/828224/
original https://sin-ack.github.io/posts/jpg-loader-bork/
#cpp #programming
👉 @cpp_lib
Пару лет назад мне выпала возможность расследовать в SerenityOS интересный баг, связанный с декодированием изображений JPG, которые по какой-то причине при просмотре выглядели так, как вы видите выше.
Странно, не так ли? Похоже, будто просто перепутали RGB и BGR. При этом внесение в JPGLoader.cpp следующего изменения:
- const Color color { (u8)block.y[pixel_index], (u8)block.cb[pixel_index], (u8)block.cr[pixel_index] };
+ const Color color { (u8)block.cr[pixel_index], (u8)block.cb[pixel_index], (u8)block.y[pixel_index] };
context.bitmap->set_pixel(x, y, color);
https://habr.com/ru/companies/ruvds/articles/828224/
original https://sin-ack.github.io/posts/jpg-loader-bork/
#cpp #programming
👉 @cpp_lib
🔥7👍1
Структуры и классы в C++ и D
Реализации объектно-ориентированного программирования в разных Си-подобных языках, конечно, похожи, и все такие языки, созданные после C++, пытаются сделать ООП более удобно используемым. Сравним в этой статье ООП в D и С++.
Структуры и классы в C++ — это фактически одно и то же (хотя на практике используются по-разному), но в D есть явная семантическая разница. Структуры в D в основном предназначены для простой инкапсуляции данных и функций в единой сущности. Наследовать структуры нельзя, а память под структуры чаще всего выделяется на стеке. Классы же можно наследовать друг от друга, а объекты классов выделяются (почти всегда) в куче, контролируемой сборщиком мусора.
https://habr.com/ru/articles/827240/
#cpp #programming
👉 @cpp_lib
Реализации объектно-ориентированного программирования в разных Си-подобных языках, конечно, похожи, и все такие языки, созданные после C++, пытаются сделать ООП более удобно используемым. Сравним в этой статье ООП в D и С++.
Структуры и классы в C++ — это фактически одно и то же (хотя на практике используются по-разному), но в D есть явная семантическая разница. Структуры в D в основном предназначены для простой инкапсуляции данных и функций в единой сущности. Наследовать структуры нельзя, а память под структуры чаще всего выделяется на стеке. Классы же можно наследовать друг от друга, а объекты классов выделяются (почти всегда) в куче, контролируемой сборщиком мусора.
https://habr.com/ru/articles/827240/
#cpp #programming
👉 @cpp_lib
👍3
Grimm Rainer (2022)
В этой книге подробно рассказывается о новом стандарте С++20. Для тех, кто не знаком с С++20, приводится краткий обзор, далее рассматриваются ключевые возможности языка. Вы получите представление о ключевых изменениях в ядре языка (концепты и модули), новой библиотеке диапазонов, корутинах, а затем сможете применить теорию на практике, изучив ряд примеров. Книгу можно использовать как справочное руководство и изучать главы в удобном для вас порядке.
Издание будет полезно разработчикам, желающим освоить последнюю версию С++, изучить передовые возможности и добавления в язык, а также заглянуть за кулисы разработки новых стандартов языка и узнать, как предлагаются, обсуждаются и утверждаются новые изменения в стандарт С++ и чем вызваны эти изменения.
#cpp #programming
👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👍2
Разработка интерфейса для Windows — это боль
Последние несколько дней я пытался найти библиотеку, которая бы позволила мне писать на C++ программы с GUI. Мои требования были довольно просты:
Достаточно только поддержки Windows;
Разрешено коммерческое использование;
Простая стилизация, в том числе и тёмный режим;
Результатом должен быть единый файл .exe размером меньше 40 МБ без или с минимальным количеством зависимостей;
Написание части программы с GUI не должно занимать больше времени, чем сама функциональность.
https://tulach.cc/writing-gui-apps-for-windows-is-painful/
#cpp #programming
👉 @cpp_lib
Последние несколько дней я пытался найти библиотеку, которая бы позволила мне писать на C++ программы с GUI. Мои требования были довольно просты:
Достаточно только поддержки Windows;
Разрешено коммерческое использование;
Простая стилизация, в том числе и тёмный режим;
Результатом должен быть единый файл .exe размером меньше 40 МБ без или с минимальным количеством зависимостей;
Написание части программы с GUI не должно занимать больше времени, чем сама функциональность.
https://tulach.cc/writing-gui-apps-for-windows-is-painful/
#cpp #programming
👉 @cpp_lib
⚡7❤2👍1🔥1🤔1🤷1
Media is too big
VIEW IN TELEGRAM
Плывущий экран. Вирус на C++. Melting Screen
Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.
источник
#cpp #programming
👉 @cpp_lib
Программа предоставлена в образовательных целях! Автор не несёт ответственности за её использование!
В этом видео вы узнаете как написать вирус на с++ который заставляет экран сыпаться и плыть.
источник
#cpp #programming
👉 @cpp_lib
👍9🔥1
Lightning Talk: Let's Write a Lambda in C++ - Ben Deane - CppCon 2023
https://www.youtube.com/watch?v=EqiLTgQcDPM
#cpp #programming
👉 @cpp_lib
https://www.youtube.com/watch?v=EqiLTgQcDPM
#cpp #programming
👉 @cpp_lib
YouTube
Lightning Talk: Let's Write a Lambda in C++ - Ben Deane - CppCon 2023
https://cppcon.org/
---
Lightning Talk: Let's Write a Lambda in C++ - Ben Deane - CppCon 2023
https://github.com/CppCon/CppCon2023
What can go into a lambda expression? Let's put in all the things.
---
Ben Deane
Ben has been programming in C++ for this…
---
Lightning Talk: Let's Write a Lambda in C++ - Ben Deane - CppCon 2023
https://github.com/CppCon/CppCon2023
What can go into a lambda expression? Let's put in all the things.
---
Ben Deane
Ben has been programming in C++ for this…
🤷♂1👍1
Как выстрелить себе в ногу в C и C++. Сборник рецептов Haiku OS
История встречи статического анализатора PVS-Studio с кодом операционной системы Haiku уходит в далёкий 2015-й год. Это был интереснейший эксперимент и полезный опыт для команд обоих проектов. Почему эксперимент? Анализатора для Linux тогда не было и не будет ещё полтора года. Но труды энтузиастов нашей команды были вознаграждены: мы познакомились с разработчиками Haiku и повысили качество кода, пополнили базу редкими ошибками программистов и доработали анализатор. Сейчас проверить код Haiku на наличие ошибок можно легко и быстро.
https://habr.com/ru/companies/pvs-studio/articles/461255/
#cpp #programming
👉 @cpp_lib
История встречи статического анализатора PVS-Studio с кодом операционной системы Haiku уходит в далёкий 2015-й год. Это был интереснейший эксперимент и полезный опыт для команд обоих проектов. Почему эксперимент? Анализатора для Linux тогда не было и не будет ещё полтора года. Но труды энтузиастов нашей команды были вознаграждены: мы познакомились с разработчиками Haiku и повысили качество кода, пополнили базу редкими ошибками программистов и доработали анализатор. Сейчас проверить код Haiku на наличие ошибок можно легко и быстро.
https://habr.com/ru/companies/pvs-studio/articles/461255/
#cpp #programming
👉 @cpp_lib
👍1
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Основы программирования на С/C++
Что такое IDE?
Почему стоит изучать С++?
Работа в Visual Studio C++ #1
Первая программа на С++
#5 Escape последовательности и Raw-строки в C++
Основные понятия языка С++
Представление чисел в памяти компьютера
Переменные и типы данных в С++
Локальные и глобальные переменные
Литералы
Потоковый ввод вывод в С++
.
.
.
Стек вызовов
Перегрузка и шаблоны функций в С++
Хвостовой возвращаемый тип в С++
Параметры по умолчанию в функции С/С++
Рекурсивные алгоритмы на языке С++
Указатель на функцию в языке С++
Динамическая память в языке С
Динамическая память в языке C++
Пример задачи на работу с динамической памятью в С++
Двумерный динамический массивна Еськова. Основы программирования
Доступно 56 видео
#cpp #programming
👉 @cpp_lib
Что такое IDE?
Почему стоит изучать С++?
Работа в Visual Studio C++ #1
Первая программа на С++
#5 Escape последовательности и Raw-строки в C++
Основные понятия языка С++
Представление чисел в памяти компьютера
Переменные и типы данных в С++
Локальные и глобальные переменные
Литералы
Потоковый ввод вывод в С++
.
.
.
Стек вызовов
Перегрузка и шаблоны функций в С++
Хвостовой возвращаемый тип в С++
Параметры по умолчанию в функции С/С++
Рекурсивные алгоритмы на языке С++
Указатель на функцию в языке С++
Динамическая память в языке С
Динамическая память в языке C++
Пример задачи на работу с динамической памятью в С++
Двумерный динамический массивна Еськова. Основы программирования
Доступно 56 видео
#cpp #programming
👉 @cpp_lib
👍8⚡1