Парсинг Protobuf со скоростью 2+GB/s
https://blog.reverberate.org/2021/04/21/musttail-efficient-interpreters.html
#cpp #programming
👉 @cpp_lib
https://blog.reverberate.org/2021/04/21/musttail-efficient-interpreters.html
#cpp #programming
👉 @cpp_lib
👍3🔥1
В этой статье рассказывается, как настроить проводную последовательную связь между двумя платами Arduino.
https://dev.to/yongchanghe/set-up-a-wired-serial-communication-between-arduino-boards-h9e
#cpp #programming #arduino
👉 @cpp_lib
https://dev.to/yongchanghe/set-up-a-wired-serial-communication-between-arduino-boards-h9e
#cpp #programming #arduino
👉 @cpp_lib
DEV Community
Set up a wired serial communication between Arduino boards
This blog explains how to set up wired serial communication between two Arduino...
👍1🔥1
C++ Programming Course - Beginner to Advanced
https://www.youtube.com/watch?v=8jLOx1hD3_o
💻 Source code: https://github.com/rutura/The-C-20-Masterclass-Source-Code
#cpp #programming
👉 @cpp_lib
https://www.youtube.com/watch?v=8jLOx1hD3_o
💻 Source code: https://github.com/rutura/The-C-20-Masterclass-Source-Code
#cpp #programming
👉 @cpp_lib
YouTube
C++ Programming Course - Beginner to Advanced
Learn modern C++ 20 programming in this comprehensive course.
💻 Source code: https://github.com/rutura/The-C-20-Masterclass-Source-Code
✏️ Course developed by Daniel Gakwaya. Check out his YouTube channel: https://www.youtube.com/channel/UCUYUFiuJ5XZ3JYtbq5dXRKQ…
💻 Source code: https://github.com/rutura/The-C-20-Masterclass-Source-Code
✏️ Course developed by Daniel Gakwaya. Check out his YouTube channel: https://www.youtube.com/channel/UCUYUFiuJ5XZ3JYtbq5dXRKQ…
👍1
Функция none_of()
Эта функция возвращает true, если ни один из элементов не удовлетворяет данному условию, иначе возвращает false.
Поскольку все элементы положительны, функция возвращает true.
#cpp #programming
👉 @cpp_lib
Эта функция возвращает true, если ни один из элементов не удовлетворяет данному условию, иначе возвращает false.
Поскольку все элементы положительны, функция возвращает true.
#cpp #programming
👉 @cpp_lib
👍2
Как в С++ обрабатывать ошибки в конструкторах без исключений?
Преимущества использования исключений сомнительны, но мои претензии к ним не в этом. Исключения — экстраординарный инструмент, которые делает код более непонятным и запутанным. А прямую локальную обработку — слишком пространной. Исключения стали для меня худшим средством обработки ошибок. Печально, что создание объектов в С++ основано на их применении. Далее
#cpp #programming
👉 @cpp_lib
Преимущества использования исключений сомнительны, но мои претензии к ним не в этом. Исключения — экстраординарный инструмент, которые делает код более непонятным и запутанным. А прямую локальную обработку — слишком пространной. Исключения стали для меня худшим средством обработки ошибок. Печально, что создание объектов в С++ основано на их применении. Далее
#cpp #programming
👉 @cpp_lib
👍4
Сопрограммы в C++: что это значит, когда я объявляю свою сопрограмму как noexcept?
https://devblogs.microsoft.com/oldnewthing/20210426-00/?p=105153
#cpp #programming
👉 @cpp_lib
https://devblogs.microsoft.com/oldnewthing/20210426-00/?p=105153
#cpp #programming
👉 @cpp_lib
Microsoft News
C++ coroutines: What does it mean when I declare my coroutine as noexcept?
The noexcept keyword doesn't mean what you think.
👍1
Функция unique
Unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [first, last). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, имеющих один и тот же элемент, присутствующий последовательно.
#cpp #programming
👉 @cpp_lib
Unique используется для удаления дубликатов любого элемента, присутствующего последовательно в диапазоне [first, last). Он выполняет эту задачу для всех подгрупп, присутствующих в диапазоне, имеющих один и тот же элемент, присутствующий последовательно.
#cpp #programming
👉 @cpp_lib
🔥3👍1
CppCast: стандартизация линейной алгебры.
https://cppcast.com/linear-algebra-iso/
#cpp #programming
👉 @cpp_lib
https://cppcast.com/linear-algebra-iso/
#cpp #programming
👉 @cpp_lib
Cppcast
Linear Algebra Standardization
Mark Hoemmen joins Rob and Jason. They first talk about an debugging improvements in VS Code and C++20/23 features going into MSVC. Then they talk to Mark Hoemmen about his past work on linear algebra libraries Tpetra and Kokkos, and current efforts to get…
👍1
Media is too big
VIEW IN TELEGRAM
Пошаговое описание того, как я создал библиотеку C++20 для реализации удаленных вызовов функций с очень небольшим количеством кода.
https://github.com/Dugy/bomba
#cpp #programming
👉 @cpp_lib
https://github.com/Dugy/bomba
#cpp #programming
👉 @cpp_lib
👍1
Multithreading in C++ (потоки, блокировки, задачи, атомарные операции, очереди сообщений)
https://www.youtube.com/watch?v=z6M5YCWm4Go
#cpp #programming
👉 @cpp_lib
https://www.youtube.com/watch?v=z6M5YCWm4Go
#cpp #programming
👉 @cpp_lib
YouTube
Лекция 5. Multithreading in C++ (потоки, блокировки, задачи, атомарные операции, очереди сообщений)
Лекция №5 в курсе "Эффективное использование С++"
Преподаватель Валерий Михайлович Лесин
Преподаватель Валерий Михайлович Лесин
🔥2
Алгоритм shuffle
Переупорядочивает элементы в заданном диапазоне [first, last) таким образом, чтобы каждая возможная перестановка этих элементов имела равную вероятность появления.
#cpp #programming
👉 @cpp_lib
Переупорядочивает элементы в заданном диапазоне [first, last) таким образом, чтобы каждая возможная перестановка этих элементов имела равную вероятность появления.
#cpp #programming
👉 @cpp_lib
👍1
Talking Async Ep1: Почему C++20 - самый крутой язык для сетевого программирования.
https://www.youtube.com/watch?v=icgnqFM-aY4
#cpp #programming
👉 @cpp_lib
https://www.youtube.com/watch?v=icgnqFM-aY4
#cpp #programming
👉 @cpp_lib
YouTube
Talking Async Ep1: Why C++20 is the Awesomest Language for Network Programming
Game-changing new Asio features, C++20 coroutines, and live coding, with Chris & Klemens.
The example programs shown in this video are available at https://github.com/chriskohlhoff/talking-async.
The example programs shown in this video are available at https://github.com/chriskohlhoff/talking-async.
Media is too big
VIEW IN TELEGRAM
Знакомство с C++: Клаус Иглбергер - Паттерны проектирования - Факты и заблуждения.
#cpp #programming
👉 @cpp_lib
#cpp #programming
👉 @cpp_lib
👍3
Зачем нужен виртуальный деструктор?
Ответ: Чтобы избежать возможной утечки ресурсов или другого неконтролируемого поведения объекта, в логику работы которого включен вызов деструктора.
Пример:
Output:
Без ключевого слова virtual у родительского класса Base деструктор порожденного класса не был бы вызван. Т.е. вызвался бы только ~Base():
Output:
#cpp #programming
👉 @cpp_lib
Ответ: Чтобы избежать возможной утечки ресурсов или другого неконтролируемого поведения объекта, в логику работы которого включен вызов деструктора.
Пример:
class Base
{
public:
virtual ~Base()
{
std::cout << "Hello from ~Base()" << std::endl;
}
};
class Derived : public Base
{
public:
virtual ~Derived()
{
// Здесь могла бы быть очистка ресурсов
std::cout << "Hello from ~Derived()" << std::endl;
}
};
Base *obj = new Derived();
delete obj;
Output:
Hello from ~Derived()
Hello from ~Base()
Без ключевого слова virtual у родительского класса Base деструктор порожденного класса не был бы вызван. Т.е. вызвался бы только ~Base():
Output:
Hello from ~Base()
#cpp #programming
👉 @cpp_lib
👍8
Что стоит помнить при использовании исключений в конструкторе объекта?
Ответ: Если исключение не обработано, то c логической точки зрения разрушается объект, который еще не создан, а с технической, так как он еще не создан, то и деструктор этого объекта не будет вызван.
Пример:
Output:
Hello from Base()
Exception message: Something failed
Я немного модифицировал предыдущий пример, чтобы проблема была наглядней. Здесь объект m_hFile (если был открыт) утечет т.к. до CloseHandle() выполнение не дойдет. Т.е. имеем такие же проблемы как в первом примере: возможная утечка ресурсов или другие проблемы из-за нарушения логики работы класса.
Здесь могут спросить: «Как бы вы поступили при подобной ситуации». Правильный ответ: «Воспользовался бы умными указателями». Простой пример умного указателя:
Теперь и без вызова деструктора Base хэндл будет закрыт, т.к. при уничтожении класса Base будет уничтожен объект m_hFile класса CHandle, в деструкторе которого и будет закрыт хэндл.
Изобретать велосипед, конечно, не надо, все уже написано до нас, это пример который можно написать на бумажке при соответствующем вопросе. А так есть boost, Loki, ATL и т.п., где это уже реализовано.
#cpp #programming
👉 @cpp_lib
Ответ: Если исключение не обработано, то c логической точки зрения разрушается объект, который еще не создан, а с технической, так как он еще не создан, то и деструктор этого объекта не будет вызван.
Пример:
class Base
{
private:
HANDLE m_hFile;
public:
Base()
{
std::cout << "Hello from Base()" << std::endl;
m_hFile = ::CreateFileA(...);
// Вызываем код, который в ходе своего выполнения бросает исключение
SomeLib.SomeFunc(...);
}
virtual ~Base()
{
std::cout << "Hello from ~Base()" << std::endl;
// Здесь мы планировали закрыть хэндл
::CloseHandle(m_hFile);
}
};
try
{
Base b;
}
catch(const std::exception &e)
{
std::cout << "Exception message: " << e.what() << std::endl;
}
Output:
Hello from Base()
Exception message: Something failed
Я немного модифицировал предыдущий пример, чтобы проблема была наглядней. Здесь объект m_hFile (если был открыт) утечет т.к. до CloseHandle() выполнение не дойдет. Т.е. имеем такие же проблемы как в первом примере: возможная утечка ресурсов или другие проблемы из-за нарушения логики работы класса.
Здесь могут спросить: «Как бы вы поступили при подобной ситуации». Правильный ответ: «Воспользовался бы умными указателями». Простой пример умного указателя:
class Base
{
private:
class CHandle
{
public:
~CHandle()
{
::CloseHandle(m_handle);
}
private:
HANDLE m_handle;
public:
// Для полноценного smart pointer'а перегрузки одной операции
// не достаточно, но для нашего примера и понимания вполне хватит
void operator = (const HANDLE &handle)
{
m_handle = handle;
}
};
CHandle m_hFile;
public:
Base()
{
std::cout << "Hello from Base()" << std::endl;
m_hFile = ::CreateFileA(...);
// Вызываем код, который в ходе своего выполнения бросает исключение
SomeLib.SomeFunc(...);
}
virtual ~Base()
{
std::cout << "Hello from ~Base()" << std::endl;
}
...Теперь и без вызова деструктора Base хэндл будет закрыт, т.к. при уничтожении класса Base будет уничтожен объект m_hFile класса CHandle, в деструкторе которого и будет закрыт хэндл.
Изобретать велосипед, конечно, не надо, все уже написано до нас, это пример который можно написать на бумажке при соответствующем вопросе. А так есть boost, Loki, ATL и т.п., где это уже реализовано.
#cpp #programming
👉 @cpp_lib
👍3
LearnCpp.com - это бесплатный сайт, посвященный обучению программированию на C++. Независимо от того, есть ли у вас опыт программирования или нет, учебники на этом сайте проведут вас через все этапы написания, компиляции и отладки программ на C++ с большим количеством примеров.
#cpp #programming
👉 @cpp_lib
#cpp #programming
👉 @cpp_lib
👍6
Всё про C++ и разработку игр / Интервью с Lead Core Developer World of Tanks Blitz
https://www.youtube.com/watch?v=QQZmDWnV618
00:00 - Начало
01:30 - Про детство и школьные годы и университет
07:33 - РЕКЛАМА
09:35 - Учёба в университете и первая работа
34:40 - Что такое игровой движок
38:03 - Первая игра
38:33 - Работа в стартапе
40:55 - Жесткое выгорание
44:43 - Про работу Wargaming
53:43 - Начало про С++: история, релизы, стандарт
1:01:55 - Про сборку мусора и уровни абстракций
1:06:09 - Зачем нужен C++ если есть C
1:11:50 - Про концепции в C++
1:18:15 - Про название языка
1:18:48 - Что можно писать на C++ и чем он хорош
1:21:20 - Про работу сборщика мусора
1:23:22 - Особенности кодирования на C++
1:25:38 - Про паттерны и недостатки языка
1:32:22 - Популярные библиотеки и фреймворки C++
1:37:20 - Стандартная библиотека C++
1:39:05 - Про ORM и SQL Lite
1:40:30 - Пакетные менеджеры - vcpkg
1:43:26 - ПО для работы на плюсах: IDE, vim, Emacs И другие программы
1:59:05 - Рекомендации по литературы по C++
2:19:40 - Про разработку игр подробнее (gamedev) - из чего состоит игра
2:27:50 - Про особенности разработки крупных игр, сетевое взаимодействие и ключевые особенности
2:38:30 - Разница игр Triple-A и казуальных игр
2:41:10 - Что нужно знать, что бы войти в геймдев: математика, алгоритмы, сети и т.д.
2:49:00 - Совет себе 15 лет назад
2:49:52 - БЛИЦ
#cpp #programming
👉 @cpp_lib
https://www.youtube.com/watch?v=QQZmDWnV618
00:00 - Начало
01:30 - Про детство и школьные годы и университет
07:33 - РЕКЛАМА
09:35 - Учёба в университете и первая работа
34:40 - Что такое игровой движок
38:03 - Первая игра
38:33 - Работа в стартапе
40:55 - Жесткое выгорание
44:43 - Про работу Wargaming
53:43 - Начало про С++: история, релизы, стандарт
1:01:55 - Про сборку мусора и уровни абстракций
1:06:09 - Зачем нужен C++ если есть C
1:11:50 - Про концепции в C++
1:18:15 - Про название языка
1:18:48 - Что можно писать на C++ и чем он хорош
1:21:20 - Про работу сборщика мусора
1:23:22 - Особенности кодирования на C++
1:25:38 - Про паттерны и недостатки языка
1:32:22 - Популярные библиотеки и фреймворки C++
1:37:20 - Стандартная библиотека C++
1:39:05 - Про ORM и SQL Lite
1:40:30 - Пакетные менеджеры - vcpkg
1:43:26 - ПО для работы на плюсах: IDE, vim, Emacs И другие программы
1:59:05 - Рекомендации по литературы по C++
2:19:40 - Про разработку игр подробнее (gamedev) - из чего состоит игра
2:27:50 - Про особенности разработки крупных игр, сетевое взаимодействие и ключевые особенности
2:38:30 - Разница игр Triple-A и казуальных игр
2:41:10 - Что нужно знать, что бы войти в геймдев: математика, алгоритмы, сети и т.д.
2:49:00 - Совет себе 15 лет назад
2:49:52 - БЛИЦ
#cpp #programming
👉 @cpp_lib
YouTube
ЯЗЫК ЯЗЫКОВ! / Всё про C++ и разработку игр / Интервью с Lead Core Developer World of Tanks Blitz
Всё ещё кодишь без AI? Го в клуб "Эволюция Кода 🧬", научу: https://itbeard.com/evocoders
Выпуск про C++. В гостях Lead Core Developer World of Tanks Blitz из компании Wargaming - Леонид Чайка. Мы проговорили без малого три часа, и вам есть что почерпнуть…
Выпуск про C++. В гостях Lead Core Developer World of Tanks Blitz из компании Wargaming - Леонид Чайка. Мы проговорили без малого три часа, и вам есть что почерпнуть…
👍4❤2
Бенчмаркинг Malloc с Doom 3
https://www.forrestthewoods.com/blog/benchmarking-malloc-with-doom3/
#cpp #programming
👉 @cpp_lib
https://www.forrestthewoods.com/blog/benchmarking-malloc-with-doom3/
#cpp #programming
👉 @cpp_lib
👍1