Библиотека C/C++ разработчика
6.81K subscribers
655 photos
691 videos
8 files
941 links
Полезные материалы по всему, что может быть полезно плюсовику/сишнику. По всем вопросам @evgenycarter
Download Telegram
Многообразие связных списков

Связный список — классическая структура данных, которая позволяет быстрые вставки/удаления, но при этом просаживает другие операции (случайный доступ к элементу). Мы пройдёмся от базовой реализации до других возможных вариаций этой структуры данных и, надеюсь, вместе узнаем что-то новое. Краем глаза увидим возможные применения связных списков. И в конце, для любителей C++, бонус: использование связного списка для сбора диагностики использования динамической памяти в вашем коде.

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

#cpp #programming

👉 @cpp_lib
👍1
Астрофото: совмещаем одиночные кадры

Одной из главных проблем при съёмке астрофотографий являются разнообразные шумы. Не буду подробно останавливаться на том, откуда они берутся и какие компоненты в них присутствуют. Об этом уже есть хорошая серия статей на Хабре. Здесь я только резюмирую основной способ борьбы с шумом: нужно снять несколько кадров одной и той же области неба (чем больше, тем лучше) и усреднить сигнал с соответствующих пикселей.

Но какие пиксели на разных кадрах считать соответствующими? Если бы можно было гарантировать, что объекты между кадрами не сдвинутся ни на пиксель, то всё было бы предельно ясно: просто суммируем одни и те же пиксели на матрице. Но что делать, когда слежение неидеально, или съёмка вовсе ведётся с неподвижного штатива? Тогда звёзды и другие небесные тела будут смещаться, и перед сложением кадры нужно будет правильно наложить друг на друга. Эта статья посвящена тому, как это сделать.

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

#cpp #programming

👉 @cpp_lib
👍1
C++, ping и traceroute

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

Первое, что мне пришло в голову - утилита ping.

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

#cpp #programming

👉 @cpp_lib
👍41
Алгоритмы диапазонов C++20 — 7 немодифицирующих операций

https://www.cppstories.com/2022/ranges-alg-part-one/

#cpp #programming

👉 @cpp_lib
👍41
dlib C++ library

Dlib - это современный инструментарий C++, содержащий алгоритмы машинного обучения и инструменты для создания сложного программного обеспечения на C++ для решения реальных задач.

https://github.com/davisking/dlib

#cpp #programming

👉 @cpp_lib
👍3🔥3
Ода хейта C++

Язык С++ по-настоящему стар. Казалось бы это должно идти ему на пользу, как хорошему вину. Но этому мешает обратная совместимость. Хорошая идея, если бы она работала...

Давайте просто честно признаемся: ни один из стандартов не был обратно совместим. ВСЕГДА реальные проекты требовали миграции и адаптации не то что под новую версию стандарта, но даже под новую версию компилятора. Чем больше проект, тем больше усилий, и порой фатальных. Уверен, среди читающих найдется человек, у которого на работе все еще 98й стандарт С++.

В целом, идея не ломать старое - хорошая. Лучше уж поломать совсем немного, чем вообще все. Не спорю, здесь С++ держится хорошо, местами даже слишком. Но из-за боязни сломать старое в языке засели старые и просто неправильные решения.

Язык настолько сильно прошит старыми древними идеями, что порой удивляешься как это до сих пор существует в современном мире, где есть куча других более изящных решений в других языках. И ведь логично было бы поправить самые крупные косяки, но нет, все заплаточки аккуратно пришиваются сверху чтобы "не дай боже старая всем нужная библиотека не сломалась". Ну раз она старая и всем нужная, разве никто не проапгрейдит ее?

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

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

#cpp #programming

👉 @cpp_lib
👍721🤔1🤝1
Введение в регулярные выражения в современном C++

Регулярные выражения (Regular expressions или, вкратце, regex — регулярки) — это пока что непопулярная и недооцененная тема в современном C++. Но в то же время разумное использование регулярных выражений может избавить вас от написания множества строчек кода. Если у вас уже есть какой-никакой опыт работы в индустрии, но вы не умеете использовать регулярные выражения — вы разбазариваете 20-30% своей продуктивности. Я настоятельно рекомендую вам освоить регулярные выражение, так как это единовременная инвестиция в себя (по известному принципу “learn once, write anywhere”).

https://dev.to/visheshpatel/introduction-to-regular-expression-with-modern-c-1bn4

#cpp #programming

👉 @cpp_lib
👍5🔥32❤‍🔥1
[C++] Регулярные выражения regex_match

Часть 1 - Введение в регулярные выражения и regex_match
Часть 2 - Практическое применение регулярных выражений и regex_search, regex_replace.

источник

#cpp #programming

👉 @cpp_lib
4🔥3👍2🤷‍♂1
📚C++: Simple and Effective Tips and Tricks to learn C++ Programming Effectively
Автор: Benjamin Smith (2020)

Надоело искать среди множества учебников простое и удобное для чтения руководство? Программистский жаргон и неполные объяснения концепций замедляют обучение? Если вы ищете справочник, в котором освещаются фундаментальные и ключевые компоненты программирования на C++, эта книга отлично подойдет.

#cpp #programming

👉 @cpp_lib
Please open Telegram to view this post
VIEW IN TELEGRAM
👍42🔥21
Алгоритмы на С/С++

Задача о Ханойской башне
Быстрая сортировка (quick sort)
Бинарный поиск в отсортированном массиве
Сортировка методом выбора
Сортировка методом пузырька
Минимизация просмотров в методе сортировки пузырьком
Модифицированный метод пузырька
Сортировка методом вставок
Шейкер - сортировка

источник

#cpp #programming

👉 @cpp_lib
👍10
Как добавить non-copyable и non-movable объект в std::map или std::unordered_map

struct weird
{
int value;
std::mutex mtx;
};

std::map<int, weird> table;

table.insert({ 1, {} }); // nope
table.insert_or_assign(1, weird{}); // nope
table.emplace({ 1, {} }); // nope
table.emplace(1, weird{}); // nope
table.try_emplace(1, weird{}); // nope


https://devblogs.microsoft.com/oldnewthing/20231023-00/?p=108916

#cpp #programming

👉 @cpp_lib
👍3
Структурированная диагностика в новом окне сведений о проблеме

Многочисленные ошибки компилятора, в которых, кажется, невозможно разобраться, - бич многих разработчиков C++. Инструменты должны предоставлять лучший опыт, чтобы помочь вам понять диагностику и понять, как исправить корень проблемы.

https://devblogs.microsoft.com/cppblog/structured-diagnostics-in-the-new-problem-details-window/

#cpp #programming

👉 @cpp_lib
👍2