👍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
Мини-утилита отправляет один запрос к открытому сервису, получает строку с адресом и выводит её — быстро, компактно и без сложных зависимостей.
Основные моменты:
• Один запрос сразу сообщает внешний адрес без лишних шагов;
• Зависимости не нужны, код переносится между проектами легко;
• Обработка ошибок бережёт программу от временных сетевых сбоев.
Такой подход удобен для диагностики, логирования и маленьких CLI-инструментов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍11❤5
This media is not supported in your browser
VIEW IN TELEGRAM
На странице собрано более тысячи вопросов с ответами: от типов и указателей до STL и шаблонов. Каждый пункт снабжён пояснением и код-фрагментом — идеальный экспресс-тренажёр перед собесом или экзаменом.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8❤4👍4
Forwarded from IT Ready
И как раз сегодня — этот самый день!
Кстати, 256 не с проста:
Это 2 в степени 8, то есть максимальное количество значений, которые может хранить один байт — основа работы компьютеров.
В невисокосный год праздник выпадает на 13 сентября, а в високосный — на 12-е.
Так что, поздравляю всех программистов!
Please open Telegram to view this post
VIEW IN TELEGRAM
❤36👍7🔥6
Они делают шаблонный код самодокументируемым, сокращают количество запутанных ошибок компиляции и позволяют писать более безопасные, предсказуемые и читаемые API.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤8👍6🤝4👎2