Создаём метрические литералы за 1 минуту!
Иногда хочется писать
Используем их так же легко, как числа:
🔥 Код становится самодокументируемым, а арифметика — безопасной и constexpr-чистой.
📣 C++ Ready | #практика
Иногда хочется писать
5_km + 300_m без «магических» коэффициентов. Пользовательские литералы делают это читаемо и проверяемо на этапе компиляции:struct Meter {
double value;
// всегда в метрах
constexpr explicit operator double() const { return value; }
};
constexpr Meter operator"" _m (long double v) { return Meter{static_cast<double>(v)}; }
constexpr Meter operator"" _km(long double v) { return Meter{static_cast<double>(v * 1000)}; }Используем их так же легко, как числа:
constexpr Meter d = 5.0_km + 300.0_m; // 5300 м на этапе компиляции
static_assert(static_cast<double>(d) == 5300.0);
std::cout << d.value << " m\n"; // вывод: 5300
🔥 Код становится самодокументируемым, а арифметика — безопасной и constexpr-чистой.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤6👍5👎2
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥26👍6❤3
👍6❤4🔥3
Он сравнивает сразу все поля и сам генерирует нужные операторы сравнения.
Что важно знать:
• Автоматически создаёт сравнения;
• Поддерживает особые случаи;
• Работает в STL без кода.
<=> упрощает сравнение объектов и отлично работает с современными стандартами и алгоритмами STL.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥31👍6❤5🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
На сайте доступно множество уроков и статей — от основ C, алгоритмов, структур данных, до веб-технологий и SQL. Всё структурировано: уровни, задания, поддержка. Даже абсолютный новичок может стартовать и постепенно прокачиваться.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤6🔥5
Constexpr-хеширование FNV-1a: делаем switch по строкам!
Нужен быстрый
Возьмём FNV-1a-хеш, который считается на этапе компиляции:
Теперь можно «переключаться» по строкам так же быстро, как по
🔥 Любые литеральные строки превращаются в константы, а сам
📣 C++ Ready | #практика
Нужен быстрый
switch без std::string_view сравнений? Возьмём FNV-1a-хеш, который считается на этапе компиляции:
// 32-битный constexpr-хеш FNV-1a
constexpr uint32_t fnv1a(char const* s, uint32_t h = 0x811c9dc5) {
return *s ? fnv1a(s + 1, (h ^ uint8_t(*s)) * 0x01000193) : h;
}
#define H(str) fnv1a(str)
Теперь можно «переключаться» по строкам так же быстро, как по
int:void handle(std::string_view cmd) {
switch (fnv1a(cmd.data())) {
case H("start"): /* … */ break;
case H("stop"): /* … */ break;
case H("status"): /* … */ break;
default: /* ? */ break;
}}🔥 Любые литеральные строки превращаются в константы, а сам
switch — чистый O(1) без сравнений символов.Please open Telegram to view this post
VIEW IN TELEGRAM
❤12👍9🔥4
Позволяет печатать данные понятно, кратко и безопасно — как в Python, но в C++.
Что важно знать:
• Проверка формата сразу;
• Очень лёгкая сборка;
• Быстрее потоков вывода.
Подходит для CLI, логов и UI — в любом проекте станет читаемым и стабильным.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥20👍7❤6