Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29❤6👍4🤝1
Проверки на этапе компиляции — static_assert!
С C++11 можно валидировать условия ещё на этапе компиляции — до запуска программы. Если
Подключаем заголовок с трейтом типов для последующих проверок:
Простейшая проверка: убеждаемся, что
В шаблонах
🔥 Это ваш первый фильтр ошибок, ловите некорректные условия сразу при сборке!
📣 C++ Ready | #практика
С C++11 можно валидировать условия ещё на этапе компиляции — до запуска программы. Если
static_assert не выполняется, компилятор выдаст понятное сообщение об ошибке.Подключаем заголовок с трейтом типов для последующих проверок:
#include <type_traits>
Простейшая проверка: убеждаемся, что
int занимает хотя бы 4 байта в целевой системе:static_assert(sizeof(int) >= 4, "int должен быть не менее 4 байт");
В шаблонах
static_assert помогает выдавать информативные ошибки: при попытке check_float<int>() компиляция не пройдёт:template<typename T>
void check_float() {
static_assert(std::is_floating_point_v<T>, "T должен быть плавающим типом");
}
int main() {
check_float<double>(); // OK
// check_float<int>(); // приведёт к ошибке: "T должен быть плавающим типом"
}
🔥 Это ваш первый фильтр ошибок, ловите некорректные условия сразу при сборке!
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤8👍3
Утилита на C++ с помощью
libgit2 выводит N последних коммитов вместе с автором, временем и кратким сообщением в понятном консольном формате.В этой CLI-утилите:
• Помогает быстро просматривать историю важных изменений проекта;
• Упрощает командную строку и избавляет от лишних действий;
• Позволяет всегда видеть автора и время каждого коммита.
Этот инструмент станет отличным дополнением к рабочему процессу C++ проектов и ускорит анализ изменений.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥16👍5❤4🤝1
Чтобы нельзя было «случайно проигнорировать» важный результат, пометьте функцию атрибутом
[[nodiscard]]. Компилятор предупредит, если возвращаемое значение не используют.Пример:
parse_num() возвращает std::optional<int> с [[nodiscard]]. Вызов без проверки (parse_num("xx");) — сразу ворнинг, а корректный путь — через if (auto n = ... ).std::optional/std::expected.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21👍8❤5
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18❤4👍4
Лайфхак для сверхбыстрого сплита строк!
Задумывались, как разделить строку на части молниеносно и без лишних затрат памяти? Покажем, как сделать это по-настоящему элегантно.
В начале — универсальная функция обработки токенов: она обходит строку, выдаёт каждый фрагмент и
Теперь легко разбираем пары
А чтобы посчитать числа без аллокаций и зависимостей от локали, используем
🔥 Главное: манипулируйте
📣 C++ Ready | #практика
Задумывались, как разделить строку на части молниеносно и без лишних затрат памяти? Покажем, как сделать это по-настоящему элегантно.
В начале — универсальная функция обработки токенов: она обходит строку, выдаёт каждый фрагмент и
НЕ создаёт временных копий.template<class F>
void for_each_token(std::string_view s, char delim, F f) {
while (true) {
size_t pos = s.find(delim);
std::string_view token = s.substr(0, pos);
f(token);
if (pos == std::string_view::npos) break;
s.remove_prefix(pos + 1);
}
}
Теперь легко разбираем пары
ключ=значение, работая прямо с исходной строкой.std::string data = "id=42;name=anna;city=Helsinki";
for_each_token(data, ';', [](std::string_view kv) {
size_t eq = kv.find('=');
auto key = kv.substr(0, eq);
auto val = (eq == std::string_view::npos)
? std::string_view{}
: kv.substr(eq + 1);
// здесь обрабатываем key и val
});
А чтобы посчитать числа без аллокаций и зависимостей от локали, используем
std::from_chars прямо внутри цикла.int total = 0;
for_each_token("10,,20,30", ',', [&](std::string_view t) {
if (t.empty()) return;
int x;
auto res = std::from_chars(t.data(), t.data() + t.size(), x);
if (res.ec == std::errc()) total += x;
});
🔥 Главное: манипулируйте
std::string_view и обрабатывайте данные на лету — никакой работы с копиями и выхлопом из аллокатора!Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥6❤4
Сегодня разбираем, почему момент старта работы меняет поведение программы и впечатление пользователя, и как осознанный выбор режима сохраняет время и нервы.
В этом гайде:
• Когда начинать работу, чтобы отклик был быстрее;
• Экономим ресурсы, не делая лишних действий заранее;
• Как проверять поведение, не вмешиваясь в процесс.
Запускайте работу вовремя, объясняйте выбор просто, показывайте выгоду, убирайте лишний шум постоянно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥19❤9👍7🤝2