Сегодня разбираем, почему момент старта работы меняет поведение программы и впечатление пользователя, и как осознанный выбор режима сохраняет время и нервы.
В этом гайде:
• Когда начинать работу, чтобы отклик был быстрее;
• Экономим ресурсы, не делая лишних действий заранее;
• Как проверять поведение, не вмешиваясь в процесс.
Запускайте работу вовремя, объясняйте выбор просто, показывайте выгоду, убирайте лишний шум постоянно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤10👍7🤝2
👍16🔥7❤4
Вместо бесконечных переборов вы последовательно сужаете границы, пока не останется одно-единственное число, экономя часы вычислений даже в самых тяжёлых задачах.
В этом посте:
• Идея занимает пару строк, а пользы море;
• Проверка понятна новичку и не путает опытных;
• Подходит как для игрушек, так и серьёзных систем.
Попробуйте этот приём однажды, и код начнёт выдавать результат быстрее, чем вы успеете щёлкнуть пальцами.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤7🔥6👍3🤝3😁1
Как не засорять область видимости временными переменными?
Классический C++-код часто выглядит так:
Легко случайно переиспользовать его в другом месте.
С C++17 можно объявить переменную прямо в условии:
Тот же приём работает и для
🔥 Полезно везде, где переменная нужна ровно для одной проверки — например,
📣 C++ Ready | #совет
Классический C++-код часто выглядит так:
auto it = scores.find("neo");
if (it != scores.end()) {
std::cout << it->second;
}it живёт дальше по коду, хотя нужен только для одного if.Легко случайно переиспользовать его в другом месте.
С C++17 можно объявить переменную прямо в условии:
if (auto it = scores.find("neo"); it != scores.end()) {
std::cout << "Score: " << it->second << '\n';
} else {
std::cout << "Not found\n";
}Тот же приём работает и для
switch, while и даже проверки результата парсинга или открытия файла.find(), lock_guard, результат парсера, дескриптор ресурса.Please open Telegram to view this post
VIEW IN TELEGRAM
👍25🔥13❤5
Создавай параллельные потоки и управляй их завершением через join() или detach(). Это повышает производительность, но важно контролировать жизненный цикл потоков, чтобы избежать ошибок и утечек ресурсов.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥23🤝10❤6👍3
Простой мини-логгер на std::format!
Хотите простой и лёгкий логгер с уровнями и метками времени без внешних библиотек?
Подключаем заголовки:
Определяем уровни и функцию вывода:
Используем в
🔥 Мини-логгер на чистом стандарте обеспечивает гибкие уровни и метки времени без лишних зависимостей.
📣 C++ Ready | #практика
Хотите простой и лёгкий логгер с уровнями и метками времени без внешних библиотек?
Подключаем заголовки:
#include <iostream>
#include <chrono>
#include <format>
#include <string_view>
Определяем уровни и функцию вывода:
enum class Level { INFO, WARN, ERROR };
void log(Level lvl, std::string_view msg) {
auto now = std::chrono::system_clock::now();
auto ts = std::format("{:%H:%M:%S}", now);
std::print("[{}][{}] {}\n",
ts,
lvl==Level::INFO ? "I" : lvl==Level::WARN ? "W" : "E",
msg);
}Используем в
main() для разных уровней:int main() {
log(Level::INFO, "Приложение запущено");
log(Level::WARN, "Память близка к лимиту");
log(Level::ERROR, "Ошибка при инициализации");
return 0;
}🔥 Мини-логгер на чистом стандарте обеспечивает гибкие уровни и метки времени без лишних зависимостей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20❤8👍5😁1
Как избежать скрытых багов из-за неявных конверсий enum?
Классические перечисления ведут себя как обычные
Передать
🔥 Используйте
📣 C++ Ready | #совет
enum class решает проблему одним движением: каждое перечисление становится полноценным типом.Классические перечисления ведут себя как обычные
int и легко «скрещиваются» друг с другом:enum Status { Ok, Error };
enum Color { Red, Green };
set_status(Red); // компилируется без варнингов!Передать
Color вместо Status больше не получится — компилятор остановит сборку (см. код на картинке).enum class по умолчанию; к старым enum возвращайтесь лишь ради legacy-кода.Please open Telegram to view this post
VIEW IN TELEGRAM
❤23👍8🔥5😁2
Один небольшой кусок логики решает, кто в списке окажется впереди, а кто уйдёт вниз, превращая сортировку в понятные читаемые правила.
В этом гайде:
• Разберём, как описывать порядок элементов простыми условиями;
• Покажем, как добавить второй признак сравнения без шума;
• Научимся быстро менять логику сортировки под разные задачи
Освоив такие приёмы, вы перестанете бояться сложных списков и будете управлять ими уверенно каждый день.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16🤝9❤5👍5