Библиотека C/C++ разработчика
6.8K subscribers
654 photos
690 videos
8 files
939 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Практика языка C, 2023-2024

Семинар 1.1. Алгоритм Евклида.
Семинар 1.2. Системы счисления.
Семинар 1.3. Числа Фибоначчи.
Допсеминар: unix shell
Семинар 2.1. Простые числа.
Семинар 2.2. Побитовые вычисления.
Семинар 2.3. Время и случайность.
Углубление пройденного: логическая память и виртуальная память.
Семинар 3.1. Линейный поиск и простые сортировки.
Семинар 3.2. Стратегия "разделяй и властвуй".

источник

#cpp #programming

👉 @cpp_lib
👍10🔥43
Сборник разных гайдов/примеров по cmake 💪

https://github.com/onqtam/awesome-cmake

#cpp #programming

👉 @cpp_lib
👍72
Базовые алгоритмы на графах

Обход графа в ширину (Поиск в ширину) aka BFS | Breadth First Search
Обход графа в глубину (Поиск в глубину) aka DFS | Depth First Search
Алгоритм Дейкстры
Алгоритм Флойда-Уоршелла
Алгоритм Прима

https://habr.com/ru/companies/timeweb/articles/751762/

#cpp #programming

👉 @cpp_lib
👍72
Полное руководство по CMake. Часть первая: Синтаксис

CMake — это открытый и кросс-платформенный набор утилит, предназначенных для автоматизации тестирования, компиляции и создания пакетов проектов на C/C++. Написав однажды небольшой и понятный всем скрипт, Вы тем самым обеспечите одинаковую сборку Вашего проекта на любых платформах, где доступен CMake.

Язык CMake, будучи транслированным в нативный файл сборки (например, Makefile или Ninja), определяет процесс всего управления проектом. В Вашем распоряжении, с функциональной стороны, есть лишь команды, которые могут образовываться в довольно сложные конструкции. С них мы и начнём.

https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-pervaya-Sintaksis-02-27

PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.

#cpp #programming

👉 @cpp_lib
👍63
Полное руководство по CMake. Часть вторая: Система сборки

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

https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-vtoraya-Sistema-sborki-02-27

PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.

#cpp #programming

👉 @cpp_lib
👍7
Полное руководство по CMake. Часть третья: Тестирование и пакетирование

Данная статья повествует о тестировании и пакетировании программ при помощи CMake — гибкого и универсального набора утилит для разработки различных программных продуктов. Строго рекомендуется прочитать первую и вторую части руководства во избежание непонимания синтаксиса и принципа работы CMake.


PS
Статья недоступна на хабре, достали из архива, все ссылки ведут через веб архив. При желании можно ручками поправить.

https://telegra.ph/Polnoe-rukovodstvo-po-CMake-CHast-tretya-Testirovanie-i-paketirovanie-02-27

#cpp #programming

👉 @cpp_lib
2👍1
Быстрый парсинг 8-битных целых чисел

Допустим, вам нужно быстро распарсить 8-битные целые числа (0, 1, 2, …, 254, 255) из строки ASCII/UTF-8. Задача взята из проекта simdzone под руководством Йероена Коеккоека (NLnet Labs). Дана строка и её длина: например, ’22’ и длина 2. Наивное решение на C может выглядеть так:

int parse_uint8_naive(const char *str, size_t len, uint8_t *num) {
uint32_t n = 0;
for (size_t i = 0, r = len & 0x3; i < r; i++) {
uint8_t d = (uint8_t)(str[i] - '0');
if (d > 9)
return 0;
n = n * 10 + d;
}
*num = (uint8_t)n;
return n < 256 && len && len < 4;
}

https://habr.com/ru/articles/784102/

#cpp #programming

👉 @cpp_lib
👍2🔥21
Media is too big
VIEW IN TELEGRAM
Why Avoid Pointer Arithmetic?

Calling all C++ developers: A free preview of CLion with much faster core IDE functions is out! 🎉 Introducing CLion Nova – a version of CLion with the C++ language engine from ReSharper C++ and JetBrains Rider. It brings:

Faster highlighting speeds
A more responsive UI
Significantly fewer freezes and hangs in refactorings

источник

#cpp #programming

👉 @cpp_lib
2
Статьи серии SObjectizer Tales

Некоторое время назад я искал альтернативы библиотеке Asynchronous Agents от Microsoft. Я разработал приложение для Windows, взаимодействующее с промышленными камерами и выполняющее множество задач, таких как визуализация и распознавание объектов, и мне нужно было, чтобы оно работало на других платформах.

1. Producing Images
2. Can you call me back?
3. Acquisition loop revisited
4. Handling commands
5. Sending commands
6. Is the stream still in progress?
7. Agent composition
8. Representing errors
9. Splitting work
10. Handling GUI from main
11. Interlude: testing
12. Receiving commands from the network
13. Routing images across the network
14. Triggering agent shutdown
15. Monitoring disconnections
16. Interrupting work
17. Limiting message flow
18. Limiting message chains
19. Thread-safe handlers
20. Performance, part 1
21. Performance, part 2

https://dev.to/ilpropheta/sobjectizer-tales-prelude-5bi8

#cpp #programming

👉 @cpp_lib
3👍1
Файловый ввод, сделанный по-человечески

Поводом к написанию данной статьи и к разработке соответствующей мини-библиотеки ffh стало одно из практических заданий по дисциплине ‘Языки программирования’, которую я веду. В этом задании необходимо прочитать все строки из текстового файла для последующей обработки. Так вот, у студентов, выбравших для выполнения этого задания язык C++ [язык программирования выбирается студентом для каждого задания, но чаще всего выбирают C++ или Python], почему-то иногда читалась из файла лишняя пустая строка. В прошлые годы я не придавал этому большого значения, но в последний раз решил таки разобраться в чём проблема. В тексте задания у меня было написано примерно следующее:
Чтобы прочитать строку из файла на языке C++ используйте такой код:

std::string s;
std::getline(f, s);


https://habr.com/ru/articles/797321/

#cpp #programming

👉 @cpp_lib
👍41
Media is too big
VIEW IN TELEGRAM
Полезные материалы для С++ разработчика: о новом стандарте, висячих ссылках и технических собеседованиях

Принесли материалы с недавнего митапа по С++ — сохраняйте в закладки, чтобы посмотреть на новогодних каникулах. Что интересного ждет в подборке?

Дискуссия о технических собеседованиях, из которой вы узнаете, какие красные флаги кандидатов отмечает Константин Владимиров, как Елена Степанова относится к алгоритмическим задачам и почему Илье Шишкову важны софтскиллы.

Обзор приятных и неприятных фич С++ 23 с точки зрения практикующего разработчика, который опробовал новый стандарт на реальных проектах.

Дюжина примеров, когда механизм lifetime extension не работает, и ответы на вопросы, что делать в таких ситуациях и как избежать последствий — ненавистных висячих ссылок.

Монады, обертки, std::expected: плюсы и минусы С++ 23 глазами практикующего разработчика
Рассказал: Илья Казаков, С++ разработчик в команде систем хранения данных, YADRO

Коротко о сути доклада: Обсудили, какие проблемы закрыл, а какие создал новый стандарт языка. Илья на примерах показал, как работает новая функциональность и в каких задачах можно применять фичи С++ 23. Его фавориты — монадический std::optional и std::expected, а удаленные опции aligned_storage и aligne_union Илья обещает помнить всегда.

https://habr.com/ru/companies/yadro/articles/783472/

#cpp #programming

👉 @cpp_lib
👍4
Media is too big
VIEW IN TELEGRAM
TCP/IP сети с помощью Boost.Asio

Boost.Asio - это кроссплатформенная библиотека C++ для программирования сетей и низкоуровневого ввода-вывода, которая предоставляет разработчикам последовательную асинхронную модель с использованием современного подхода C++.

В этом месяце Ричард Томсон продолжит наше знакомство с Boost.Asio рассмотрением сетевых технологий TCP/IP. Мы рассмотрим, как реализовать клиент NNTP (Network News Transport Protocol) с помощью Boost.Asio. NNTP - это линейно-ориентированный протокол для чтения новостных статей usenet. Это даст нам представление обо всех типичных проблемах, связанных с сетевыми приложениями TCP/IP:

- Как преобразовать имя хоста в IP-адрес?
- Как установить долговременное соединение с сервером NNTP?
- Как обрабатывать произвольно большие объемы данных с NNTP-сервера, которые поступают асинхронно?
- Как мы координируем ввод данных пользователем с вводом/выводом NNTP?
- Как мы справляемся с неожиданными сетевыми ошибками?

источник

#cpp #programming

👉 @cpp_lib
👍3🔥311