fa
Feedback

فریب کلاهبرداران را نخورید! تل‌متریو این کانال‌ها را شناسایی و برچسب‌گذاری می‌کند 👉 برای مشاهده برچسب، اشتراک تهیه کنید

Библиотека C/C++ разработчика

Библиотека C/C++ разработчика

رفتن به کانال در Telegram

Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter

نمایش بیشتر
7 197
مشترکین
-424 ساعت
+67 روز
-3130 روز
آرشیو پست ها
Введение в 30 наиболее важных структур данных и алгоритмов. Структуры данных и алгоритмы (DSA) часто считаются пугающей темой
Введение в 30 наиболее важных структур данных и алгоритмов. Структуры данных и алгоритмы (DSA) часто считаются пугающей темой - это распространенное заблуждение. Являясь основой самых инновационных концепций в области технологий, они необходимы как для соискателей на работу/стажировку, так и для опытных программистов. Владение DSA означает, что вы способны использовать свое вычислительное и алгоритмическое мышление для решения невиданных ранее проблем и способствовать повышению ценности любой технологической компании (включая вашу собственную!). Понимая их, вы сможете улучшить сопровождаемость, расширяемость и эффективность своего кода. Далее #cpp #programming 👉 @cpp_lib

STL с нуля | C++ 1:24 - заполнение контейнеров. 2:44 - вопрос о передаче параметра в функцию (копия, ссылка, универсальная ссылка). 4:54 - как посмотреть, что генерит компилятор из универсальной ссылки. 8:53 - про рандом. 10:36 - list vs vector. 14:38 - как удалить элемент из std::vector. 16:19 - решение задачи про исчезнувший элемент. 18:11 - обсуждаем сложность алгоритмов. 21:37 - чем хороша STL. #cpp #programming 👉 @cpp_lib

Мое Собеседование С Европейской Компанией. Senior C++ Developer Привет, Я Дима мне 26 и я программист. Недавно я прошел 4-й этап собеседований с Польской IT-компанией на позицию Senior C++ Developer. Этапы были следующие: 1. HR - убедиться, что я адекватный и проверить английский. 2. Технический - теория. 3. Технический - мой бэкграунд и теория. 4. Технический - практика и теория. #cpp #programming 👉 @cpp_lib

+2
CupOfT CupOfT #1: C++, const and thread-safety CupOfT #2: C++ and safe raw pointers CupOfT #3: threads + stateful allocators = ♥ #cpp #programming 👉 @cpp_lib

5 причин, по которым вам следует использовать C++ для цифровой обработки сигналов. https://dev.to/educative/5-reasons-you-sho
5 причин, по которым вам следует использовать C++ для цифровой обработки сигналов. https://dev.to/educative/5-reasons-you-should-use-c-for-digital-signal-processing-1n5p #cpp #programming 👉 @cpp_lib

Сопрограммы в C++: что это значит, когда я объявляю свою сопрограмму как noexcept? https://devblogs.microsoft.com/oldnewthing/20210426-00/?p=105153 #cpp #programming 👉 @cpp_lib

Пример пузырьковой сортировки, для контейнеров, без временных переменных. template <typename T > void bubble_sort( T &a ) { for( T::size_type i = 0; a.size() && i < a.size() - 1; ++i ) { for( T::size_type j = i; j + 1 > 0; --j ) { if( a[j] > a[j+1] ) std::swap( a[j], a[j+1] ); } } } std::vector<int> v; v.push_back( 7 ); v.push_back( 1000 ); v.push_back( 134 ); v.push_back( 23 ); v.push_back( 1 ); bubble_sort( v ); #cpp #programming 👉 @cpp_lib

Для каких целей применяется ключевое слово const? Ответ: 1.Позволяет задать константность объекта 2.Позволяет задать константность указателя 3.Позволяет указать, что данный метод не модифицирует члены класса, т.е. сохраняет состояние объекта Пример 1. Не можем изменить значение объекта: const int i = 1; i = 2; // error C3892: 'i' : you cannot assign to a variable that is const Пример 2. Не можем изменить указатель на объект: int i = 1; int* const j(&i); int k = 2; *j = k; // Ok j = &k; // error C3892: 'j' : you cannot assign to a variable that is const Пример 3. Не можем изменить члены класса: class Foo { private: int i; public: void func() const { i = 1; // error C3490: 'i' cannot be modified because it is being accessed through a const object } }; Дополнение: константный метод может изменять члены класса, если они объявлены как mutable. #cpp #programming 👉 @cpp_lib

Быстрая сортировка с векторизацией и переносимостью производительности. https://opensource.googleblog.com/2022/06/Vectorized%20and%20performance%20portable%20Quicksort.html #cpp #programming 👉 @cpp_lib

Использование флагов компилятора для защиты стека в GCC и Clang. https://developers.redhat.com/articles/2022/06/02/use-compil
Использование флагов компилятора для защиты стека в GCC и Clang. https://developers.redhat.com/articles/2022/06/02/use-compiler-flags-stack-protection-gcc-and-clang #cpp #programming 👉 @cpp_lib

Всё про 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

LearnCpp.com - это бесплатный сайт, посвященный обучению программированию на C++. Независимо от того, есть ли у вас опыт прог
LearnCpp.com - это бесплатный сайт, посвященный обучению программированию на C++. Независимо от того, есть ли у вас опыт программирования или нет, учебники на этом сайте проведут вас через все этапы написания, компиляции и отладки программ на C++ с большим количеством примеров. #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

Зачем нужен виртуальный деструктор? Ответ: Чтобы избежать возможной утечки ресурсов или другого неконтролируемого поведения объекта, в логику работы которого включен вызов деструктора. Пример: 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

C/C++ cheatsheet Documentation #cpp #programming 👉 @cpp_lib

C++ Reference Card #cpp #programming 👉 @cpp_lib

Знакомство с C++: Клаус Иглбергер - Паттерны проектирования - Факты и заблуждения. #cpp #programming 👉 @cpp_lib

Talking Async Ep1: Почему C++20 - самый крутой язык для сетевого программирования. https://www.youtube.com/watch?v=icgnqFM-aY4 #cpp #programming 👉 @cpp_lib

Алгоритм shuffle Переупорядочивает элементы в заданном диапазоне [first, last) таким образом, чтобы каждая возможная перестан
Алгоритм shuffle Переупорядочивает элементы в заданном диапазоне [first, last) таким образом, чтобы каждая возможная перестановка этих элементов имела равную вероятность появления. #cpp #programming 👉 @cpp_lib