Молниеносный фреймворк нейронных сетей на C++/CUDA (by nvlabs)
https://www.libhunt.com/r/tiny-cuda-nn
#cpp #programming
👉 @cpp_lib
https://www.libhunt.com/r/tiny-cuda-nn
#cpp #programming
👉 @cpp_lib
Libhunt
Tiny-cuda-nn Alternatives and Reviews
Which is the best alternative to tiny-cuda-nn? Based on common mentions it is: Instant-ngp, MindsDB, Diffrax, Blis, Dex-lang, Einops, Vectorflow or Hasktorch
👍2
New C++ features in GCC 12 (Новые фичи C++ в GCC 12)
https://developers.redhat.com/articles/2022/04/25/new-c-features-gcc-12
#cpp #programming
👉 @cpp_lib
https://developers.redhat.com/articles/2022/04/25/new-c-features-gcc-12
#cpp #programming
👉 @cpp_lib
Red Hat Developer
New C++ features in GCC 12 | Red Hat Developer
Version 12.1 of the GNU Compiler Collection (GCC) is expected to be released in April 2022. Like every major GCC release, this version will bring many additions, improvements, bug fixes, and new
👍2
Функция all_of
Эта функция работает со всем диапазоном элементов массива и может сэкономить время на запуск цикла для проверки каждого элемента по одному. Он проверяет заданное свойство для каждого элемента и возвращает true, когда каждый элемент в диапазоне удовлетворяет указанному свойству, иначе возвращает false.
В приведенном выше коде отрицательный элемент -6 отрицает условие и возвращает ложь.
#cpp #programming
👉 @cpp_lib
Эта функция работает со всем диапазоном элементов массива и может сэкономить время на запуск цикла для проверки каждого элемента по одному. Он проверяет заданное свойство для каждого элемента и возвращает true, когда каждый элемент в диапазоне удовлетворяет указанному свойству, иначе возвращает false.
В приведенном выше коде отрицательный элемент -6 отрицает условие и возвращает ложь.
#cpp #programming
👉 @cpp_lib
👍5
Парсинг 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