Библиотека C/C++ разработчика | cpp, boost, qt
20.5K subscribers
1.72K photos
46 videos
16 files
3.91K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
Самые полезные каналы для программистов в одной подборке!

Сохраняйте себе, чтобы не потерять 💾

🔥Для всех

Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы

🐘PHP

Библиотека пхпшника
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты

🐍Python

Библиотека питониста
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты

Java

Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков

👾Data Science

Библиотека Data Science — полезные статьи, новости и обучающие материалы
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту

🦫Go

Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go

🧠C++

Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++

💻Другие профильные каналы

Библиотека фронтендера
Библиотека шарписта
Библиотека мобильного разработчика
Библиотека хакера
Библиотека devops’a
Библиотека тестировщика

💼Каналы с вакансиями

Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
Вакансии по DevOps & SRE
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности

📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈

🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT

Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook
🔸Instagram
👍32🔥1👏1
co_await, co_yield и co_return

co_await, co_yield и co_return — это ключевые слова, которые используются для реализации корутин (coroutines).

co_await используется для приостановки корутины и ожидания результата асинхронной операции.

co_yield используется для приостановки корутины и передачи управления обратно вызывающему коду.

co_return используется для завершения корутины и возврата результата.

В этом примере используются все три ключевых слова:
— co_await приостанавливает корутину create_task в начале.
— co_yield можно было бы использовать для дополнительных приостановок.
— co_return завершает корутину в конце.
#код
👍7
Очередной #дайджест по С++:

🤖 IMSProg — программатор для CH341a в Linux
О создании полезных программ под линукс.

🤖 Поиск ошибок в проектах на основе Unreal Engine
В статическом анализаторе PVS-Studio начали появляться диагностические правила для выявления багов, специфичных для Unreal Engine проектов.

🤖 Как я делал бюджетное устройство мониторинга качества среды и что из этого вышло
Про довольно необычную автоматизацию.

🤖 Современное состояние инструментов поиска утечек памяти
Несмотря на большое количество доступных инструментов поиска утечек памяти, существует ряд ограничений применимости этих инструментов.
👍31
Как часто вы обращаетесь к документации?
#интерактив
🧑‍💻 Статьи для IT: как объяснять и распространять значимые идеи

Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.

Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.

Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.

👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Алгоритм forward_list::before_begin()

Алгоритм возвращает итератор, указывающий на позицию перед первым элементом forward_list.

Временная сложность: O(1)
Вспомогательное пространство: O(1).

Подробнее можно почитать здесь.
#код
👍8
В чем разница между многопоточностью и асинхронностью?

Разница между многопоточностью и асинхронностью заключается в подходе к параллельному выполнению кода.

При многопоточности создаются несколько потоков управления, которые выполняются параллельно и могут разделять общие данные.
Это позволяет эффективно использовать многоядерные процессоры, но требует синхронизации доступа к общим данным с помощью мьютексов, семафоров и т. д.

Асинхронность же основана на событийной модели — код выполняется последовательно в рамках одного потока, но части кода могут приостанавливаться в ожидании каких-либо событий (например, завершения ввода-вывода).
Это позволяет избежать сложностей синхронизации, но ограничивает возможности параллелизма.

Таким образом, многопоточность эффективнее использует ресурсы процессора, а асинхронность проще в реализации и избегает проблем синхронизации.
#вопросы_с_собеседований
👍201
Aggregate initialization

Aggregate initialization — это форма инициализации, которая позволяет инициализировать агрегаты (объекты определенных типов) с использованием фигурных скобок и списка значений. Агрегаты могут быть одним из следующих типов:

— Массивы
— Структуры или классы без пользовательских конструкторов, без закрытых или защищенных нестатических членов данных, без базовых классов и без виртуальных функций.

В этом примере мы создаем структуру Point, которая содержит два целочисленных поля x и y. Затем мы инициализируем объект p1 этой структуры с помощью aggregate initialization, указывая значения для x и y в фигурных скобках. Аналогично, мы инициализируем массив arr с помощью списка значений в фигурных скобках.
#код
👍111
-Werror не ваш друг

Автор делится мнением о том, что же не так с -Werror.

Читать статью
Пробовали ли программировать на планшете?
#интерактив
🤯17👍5
Автоматический вывод типа аргумента шаблона класса

Выглядит название этой возможности довольно длинным и сложным, но на самом деле ничего сложного тут нет. Основная идея в том, что в C++17 вывод типов аргументов шаблонов выполняется и для стандартных шаблонов классов. Ранее это поддерживалось лишь для функциональных шаблонов. В результате оказывается, что раньше писали так:

std::pair user = {"M", 25};

С выходом C++ 17 эту конструкцию стало можно заменить на эту:

std::pair user = {"M", 25};

Вывод типов выполняется неявно. Этим механизмом ещё удобнее пользоваться в том случае, когда речь идёт о кортежах. А именно, раньше приходилось писать следующее:

std::tuple user ("M", "Chy", 25);

Теперь же то же самое выглядит так:

std::tuple user2("M", "Chy", 25);

Тут стоит отметить, что эти возможности не покажутся чем-то достойным внимания тем, кто не особенно хорошо знаком с шаблонами C++.
😁27👍4🤯2🤔1
Очередной #дайджест по С++:

✍️ Глубина кроличьей норы: бинарная граница и ABI C++
Мир С++ многое сокрывает от глаз программиста. Это свойство языка — обоюдоострый меч, который с одной стороны позволяет уменьшить порог входа, но в то же время является препятствием при написании программ, уходящих дальше стандартного примера.

✍️ C++ и космические технологии
О новшестве в мире C++ — операторе "спейсшип" (spaceship aka three-way comparison), он же тройное сравнение.

✍️ Сборка мусора: как это делается в системном программировании
Поговорим об одной из наиболее критичных по производительности программ, которой вы пользуетесь ежедневно: о вашей операционной системе.

✍️ Действительно ли указатели функций и виртуальные функции работают медленно?
Довольно большая статья об оптимизации.
👍7
std::conditional_variable

Стандартная библиотека предоставляет два компонента для работы с многопоточностью: std::thread для создания и управления потоками и std::mutex для обеспечения синхронизации доступа к общим данным. Для синхронизации потоков при ожидании определенных условий используется std::condition_variable.

std::condition_variable представляет собой механизм, который позволяет одному потоку ждать, пока другой поток выполняет определенные действия, и затем оповещать первый поток о завершении выполнения этих действий. Она используется вместе с std::unique_lock (или другими мьютексами) для ожидания изменения состояния.
#код
👍11
Как сравнить целые числа со знаком и без знака в C++20?

Сравнение двух чисел должно быть простым, не так ли? Возможно, так и должно быть, но в C++ это не так, даже если мы ограничим сравнение областью целых чисел.

Читать статью
👍6
Вложенные пространства имен (nested namespaces)

Как можно понять из названия, вложенное пространство имен определяется внутри другого пространства имен. Они используются для организации кода, разделения его на логические блоки и предотвращения конфликтов имен.

nested namespaces часто используются в больших проектах, при создании библиотек, а также для версионирования.
#код
👍31
Какие есть способы инициализации полей класса?

В C++ есть несколько способов инициализации полей класса:

— Конструктор: в конструкторе класса можно присвоить начальные значения полям.

— Инициализаторы: можно задать начальные значения для полей непосредственно при их объявлении в классе.

— Инициализационный список: позволяет проинициализировать поля до вызова тела конструктора.

— Значения по умолчанию: для базовых типов компилятор сам присвоит значения по умолчанию, если не указано иное.

— Статическая инициализация: для статических полей класса можно задать начальное значение непосредственно при объявлении.

Каждый из этих способов имеет свои особенности и подходит для разных случаев инициализации полей класса.
#вопросы_с_собеседований
👍6🤯1
Дано целое число, преобразовать его в римскую цифру

В нашем решении метод intToRoman принимает целое число в качестве аргумента и возвращает его римское представление в виде строки.

Внутри метода intToRoman создаются четыре массива строк, которые содержат римские числа для единиц, десятков, сотен и тысяч. Затем создается строка Roman, которая формируется путем конкатенации соответствующих элементов из каждого массива, используя арифметические операции для определения индексов.
#код
👍19🤯1
🤖 Возможности С++ для микроконтроллеров

Ваш умный холодильник, принтер, колонка и даже дверной звонок контролируются микроконтроллером. А сам код для них пишут, чаще всего, на C/C++.

В докладе автор рассказывает, почему именно C++, как правильно написать код, а также показывает парочку полезных примеров.

Смотреть видео
👍15
Класс std::string

std::string — это фундаментальный класс в языке программирования C++, который представляет собой последовательность символов. Он используется для работы со строками и является частью стандартной библиотеки C++.

Рассмотрим пять основных функций std::string:

length() — возвращает длину строки;
append(str) — добавляет строку str в конец текущей строки;
substr(start, length) — возвращает подстроку, начинающуюся с индекса start и имеющую длину length;
find(str) — ищет первое вхождение строки str в текущей строке и возвращает индекс первого символа этой подстроки;
replace(start, length, str) — заменяет подстроку, начинающуюся с индекса start и имеющую длину length, на строку str.
#код
👍181
Очередной #дайджест по С++:

✍️ Детектор Судного дня или как я разработал датчик радиации для Home Assistant
Статья о науке любительского уровня.

✍️ Выполнение UTF-8 в Windows
Статья о том, как обрабатывать кодировку UTF-8 на платформе, которая по-прежнему поддерживает кодировку UTF-16.

✍️ Ускоряем работу за счет дублирования кода
Небольшая, но любопытная статья.

✍️ userver
Готовый к использованию асинхронный фреймворк C++ с богатым функционалом.

#дайджест
👍21
std::sort

std::sort — это функция стандартной библиотеки для сортировки элементов в контейнерах, таких как вектор или список.
Чтобы использовать std::sort, нужно подключить заголовочный файл .

Метод принимает в качестве аргументов итераторы на начало и конец сортируемой последовательности и сортирует элементы в возрастающем порядке по умолчанию.

Для определения порядка сортировки можно указать свой компаратор.
#код
👍12🔥1