👋🏼 Приветствую!
Ровно год назад я создал этот канал и не только (не важно что 9 марта, главное первый пост был 8 сентября 😁).
Спасибо всем кто подписан на мои плюсы, особенно благодарю тех, кто ставит реакции.
👩💻 За это время контент намного стал лучше, с таких постов, до таких как сейчас.
Но кстати всё равно, раньше тоже круто было, можете перейти в закреп и там посмотреть на старые постики.
В общем, поздравляю сам себя с годовщиной!🥳
Ровно год назад я создал этот канал и не только (не важно что 9 марта, главное первый пост был 8 сентября 😁).
Спасибо всем кто подписан на мои плюсы, особенно благодарю тех, кто ставит реакции.
Но кстати всё равно, раньше тоже круто было, можете перейти в закреп и там посмотреть на старые постики.
В общем, поздравляю сам себя с годовщиной!
Please open Telegram to view this post
VIEW IN TELEGRAM
4👍69❤18🔥17😁3
This media is not supported in your browser
VIEW IN TELEGRAM
На странице-теге собраны сотни лаконичных материалов: от азов STL и умных указателей до продвинутого Boost.Asio, шаблонного программирования и алгоритмов. Есть учебные проекты, интервью-шпоры и регулярные “Daily 43” задачки.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤9🔥8👍4😁1
Параллельные и векторные политики позволяют разгонять вычисления без переписывания кода.
Что важно знать:
• par — для CPU-bound задач;
• par_unseq — многопоточность + SIMD;
• прирост заметен на больших массивах.
Параллельные алгоритмы STL — это ускорение «по щелчку» без ручного TBB или OpenMP.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23❤9👍4
std::expected в C++23: элегантные ошибки без try/catch!
Когда нужен результат или описание проблемы, а ради одной-двух проверок не хочется плодить исключения — новый шаблон
Напишем функцию, которая парсит число из строки и сообщает об ошибке текстом:
Используем результат без исключений и без
🔥 Результат: одно и то же выражение возвращает либо готовый
📣 C++ Ready | #практика
Когда нужен результат или описание проблемы, а ради одной-двух проверок не хочется плодить исключения — новый шаблон
std::expected<T,E> приходит на помощь.Напишем функцию, которая парсит число из строки и сообщает об ошибке текстом:
std::expected<int, std::string> parse_int(std::string_view s) {
int value{};
auto [ptr, ec] = std::from_chars(s.data(), s.data() + s.size(), value);
if (ec == std::errc{})
return value; expected<int>
return std::unexpected("Не число");
}Используем результат без исключений и без
bool-флагов:auto n = parse_int("42");
if (n) { // аналог has_value()
std::cout << "OK: " << *n << '\n';
} else {
std::cout << "Ошибка: " << n.error() << '\n';
}🔥 Результат: одно и то же выражение возвращает либо готовый
int, либо понятное сообщение об ошибке — чёткое API и ноль накладных расходов на механизм исключений.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12🔥8👍5
Она позволяет атомарно записывать и считывать значения, обменивать их и возвращать прежнее, условно изменять содержимое с возможностью или без возможности ложного отказаPlease open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤5👍4👎1🤝1
👍9🔥4❤2👎1
Он помогает выбрать лучший набор вещей, не перегружая сумку. Всё это достигается быстрым перебором возможных сочетаний!
Ключевые моменты:
• Оцениваем пользу каждого предмета и его тяжесть;
• Постепенно собираем сумку, пробуя тяжёлые варианты позже;
• Запоминаем лучшие итоги, избегая лишних пересчётов и хранения.
Рюкзак показывает, как извлечь максимум пользы из ограниченного веса, оставаясь в рамках бюджета возможностей.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤6👍4🤝1
Пользовательские аллокаторы в STL: управляем памятью сами!
Иногда нужен точный контроль за выделением памяти — например, чтобы логировать аллокации или запитывать контейнеры из собственного буфера.
Для этого стандартные контейнеры C++ позволяют подставить свой аллокатор.
Создадим минимальный аллокатор с логированием:
Теперь подключим аллокатор к контейнеру:
🔥 Результат: контейнер логирует каждое выделение и освобождение памяти, позволяя внедрять кастомные стратегии без глобальной подмены
📣 C++ Ready | #практика
Иногда нужен точный контроль за выделением памяти — например, чтобы логировать аллокации или запитывать контейнеры из собственного буфера.
Для этого стандартные контейнеры C++ позволяют подставить свой аллокатор.
Создадим минимальный аллокатор с логированием:
template <typename T>
struct LoggingAllocator {
using value_type = T;
T* allocate(std::size_t n) {
std::cout << "alloc " << n << '\n';
return static_cast<T*>(::operator new(n * sizeof(T)));
}
void deallocate(T* p, std::size_t) noexcept {
std::cout << "free\n";
::operator delete(p);
}
};
allocate выводит сообщение и выделяет память обычным способом; deallocate симметрично освобождает её.Теперь подключим аллокатор к контейнеру:
std::vector<int, LoggingAllocator<int>> v;
v.push_back(1); // → alloc 1
v.push_back(2); // → alloc 2
🔥 Результат: контейнер логирует каждое выделение и освобождение памяти, позволяя внедрять кастомные стратегии без глобальной подмены
new/delete.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍7🔥6