C/C++ Ready | Программирование
14.5K subscribers
1.32K photos
83 videos
626 links
Авторский канал по разработке на C и C++.
Ресурсы, гайды, задачи, шпаргалки.
Информация ежедневно пополняется!

Автор: @energy_it

РКН: https://clck.ru/3QREHc

Реклама на бирже: https://telega.in/c/cpp_ready
Download Telegram
📂 Напоминалка по netcat (nc) — универсальному сетевому «швейцарскому ножу»

Лёгкая утилита-«швейцарский нож» для TCP/UDP и UNIX-сокетов: слушает/устанавливает соединения, пересылает файлы, делает обратные оболочки, стримит и сканирует порты/граббинг баннеров.

Часто комбинируют с openssl, tar, dd для шифрования, архивации и клонирования.

📣 C++ Ready | #ресурс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥136👍4
Почему std::accumulate может неожиданно обрезать дроби?

На первый взгляд здесь всё нормально:
std::vector<double> v = {1.5, 2.5, 3.5};

auto sum = std::accumulate(v.begin(), v.end(), 0);


В vector лежат double, значит сумма тоже должна быть double.

Но есть нюанс. Тип аккумулятора задаётся третьим аргументом.
А 0 — это int.

Поэтому вычисление может идти через целочисленный аккумулятор, и дробная часть будет теряться.

Правильно так:
auto sum = std::accumulate(v.begin(), v.end(), 0.0);


Теперь начальное значение — double, и сумма считается как double.

🔥 В std::accumulate третий аргумент — это не просто старт. Это тип всего вычисления.

📣 C++ Ready | #совет
Please open Telegram to view this post
VIEW IN TELEGRAM
16👍7🔥3🤝3
😎 Как рендер может тормозить UI?

В этой статье:

• Как разделить CPU и GPU задачи
• Как работают очереди и command buffers
• Зачем Vulkan требует явной синхронизации


🔊 Продолжай читать на habr!


📣 C++ Ready | #статья
Please open Telegram to view this post
VIEW IN TELEGRAM
12👍3👎3🔥3
Генерируем случайный пароль на чистом C++!

Иногда нужно быстро создать случайную строку: временный пароль, токен для тестов или случайный идентификатор. Вручную выбирать символы неудобно, поэтому можно собрать маленький генератор с помощью стандартной библиотеки.

Для этого используем std::random_device, std::mt19937 и std::uniform_int_distribution.

Теперь создадим функцию, которая генерирует пароль нужной длины:
std::string make_password(std::size_t length) {
const std::string chars =
"abcdefghijklmnopqrstuvwxyz"
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
"0123456789"
"!@#$%^&*";

std::random_device rd;
std::mt19937 gen(rd());

std::uniform_int_distribution<std::size_t> dist(
0, chars.size() - 1
);

std::string result;

for (std::size_t i = 0; i < length; ++i) {
result += chars[dist(gen)];
}

return result;
}


Теперь функцию можно вызвать из main:
int main() {
std::string password = make_password(12);

std::cout << "Password: " << password << '\n';
}


При каждом запуске программа будет создавать новую случайную строку:
Password: a7K!pQ2z#Lm9


Внутри всё просто: мы задаём набор допустимых символов, случайно выбираем индекс из этого набора и добавляем выбранный символ в результат.

🔥 Генератор паролей на C++ — это простой способ увидеть std::random в деле и сразу получить полезный результат.

📣 C++ Ready | #практика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍145🔥4
This media is not supported in your browser
VIEW IN TELEGRAM
☕️ C++ Tutorial — подробный гайд по C++ для начинающих!

Здесь пошагово разбираются основы языка: переменные, циклы, функции, массивы, указатели, ООП, классы и другие важные темы. Всё объясняется простым языком с примерами кода и постепенным усложнением материала. Помимо основ, есть статьи по более продвинутым возможностям языка и практические примеры.

📌 Оставляю ссылочку: beginnersbook.com

📣 C++ Ready | #сайт
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥196🤝6👍2