Библиотека C/C++ разработчика | cpp, boost, qt
19.9K subscribers
1.87K photos
55 videos
16 files
4.08K links
Все самое полезное для плюсовика и сишника в одном канале.

По рекламе: @proglib_adv

Учиться у нас: https://proglib.io/w/d6cd2932

Для обратной связи: @proglibrary_feeedback_bot

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17
Download Telegram
💥 Весь октябрь -40% на курсы для разработчиков в proglib.academy

Бери знания под свой стек:
Python | алгоритмы | математика для Data Science | архитектура кода.

Пока одни ждут «идеальный момент», другие просто учатся.
А потом берут ваши офферы.


⚡️ Пока скидка действует, апдейтни свои навыки
😁1
🎲 std::random vs rand() — генерация случайных чисел

Старый rand() из Си имеет множество проблем: плохое качество, ограниченный диапазон, глобальное состояние. В C++11 появились современные генераторы из <random>.

Старый подход:
#include <cstdlib>
#include <ctime>

srand(time(nullptr)); // Предсказуемо!
int dice = rand() % 6 + 1; // Неравномерное распределение!
double prob = rand() / (double)RAND_MAX; // Плохая точность


🍒 Современный подход:
#include <random>

// Инициализация генератора (один раз)
std::random_device rd;
std::mt19937 gen(rd()); // Mersenne Twister

// Равномерное распределение [1, 6]
std::uniform_int_distribution dice(1, 6);
int roll = dice(gen);

// Вещественное [0.0, 1.0)
std::uniform_real_distribution prob(0.0, 1.0);
double p = prob(gen);

// Нормальное распределение
std::normal_distribution normal(0.0, 1.0);
double value = normal(gen);



✏️ Доступные распределения:

• uniform_int_distribution — целые числа
• uniform_real_distribution — вещественные
• normal_distribution — гауссово
• bernoulli_distribution — булево
• exponential_distribution, poisson_distribution и другие

Библиотека C/C++ разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🔥7🌚2👾1
🦀 Транспиляция кода: от одного языка к другому

Представьте ситуацию: вы нашли идеальное решение на GitHub, но оно написано не на том языке. Или ваш руководитель прочитал статью о новом фреймворке, и теперь нужно переписывать всю кодовую базу. Знакомо?

Хорошая новость: современные LLM-модели отлично справляются с транспиляцией кода между языками программирования.


✏️ Промпт

Rewrite the following code in C++:

[Вставь свой код сюда]



🍴 Пример использования

# Исходный Python код

def count_words(text):
"""Count word frequency in text"""
words = text.lower().split()
freq = {}
for word in words:
freq[word] = freq.get(word, 0) + 1
return freq

# Пример использования
text = "hello world hello python world"
print(count_words(text))
# Output: {'hello': 2, 'world': 2, 'python': 1}


Результат:

#include <iostream>
#include <string>
#include <map>
#include <sstream>
#include <algorithm>

std::map<std::string, int> count_words(const std::string& text) {
std::map<std::string, int> freq;
std::istringstream stream(text);
std::string word;

while (stream >> word) {
// Convert to lowercase
std::transform(word.begin(), word.end(), word.begin(), ::tolower);
freq[word]++;
}

return freq;
}

int main() {
std::string text = "hello world hello python world";
auto result = count_words(text);

for (const auto& [word, count] : result) {
std::cout << word << ": " << count << std::endl;
}

return 0;
}


Библиотека C/C++ разработчика


#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👾1
⚡️ VS Code: мультикурсоры

Знакомо ли тебе чувство, когда нужно изменить одинаковые переменные в 15 местах, и ты тыкаешь мышкой чтобы поменять каждое из них?


Решение: Ctrl+D - выделяет каждое следующее вхождения

Выдели слово → жми Ctrl+D для каждого следующего → редактируй все сразу

// Было
int temp = 0;
temp = getValue();
process(temp);
return temp;

// Жмёшь Ctrl+D три раза на temp и меняешь
int result = 0;
result = getValue();
process(result);
return result;


💣
Бонус: Ctrl+Shift+L выделяет ВСЕ вхождения сразу. Но осторожно - может зацепить лишнее.


Библиотека C/C++ разработчика


#буст
👍83
Лучший подарок для программиста😻

Перевод:
Розы красные
Фиалки синие
Неожиданное '}' на линии 32

Библиотека C/C++ разработчика
#развлекалово
🤩5😁4🌚1
🪣 50 фраз которые портят ваше резюме

Рекрутеры видят одно и то же в каждом втором резюме: «командный игрок», «работаю с современными технологиями», «обладаю аналитическим складом ума». Эти клише не просто скучны — они ставят под сомнение вашу компетентность. Разбираем 50+ шаблонных фраз по всем IT-направлениям и показываем, как их заменить или вообще выкинуть.

Читаем дальше...

Библиотека C/C++ разработчика

#буст
😁2
This media is not supported in your browser
VIEW IN TELEGRAM
В proglib.academy — Глобальная распродажа знаний ‼️

💥 Весь октябрь –40% на те курсы, которые выбирают чаще всего.

Курсы с практикой, без воды и пафоса.
Просто берёшь и делаешь апгрейд.


👉 Успей забрать свой курс на proglib.academy
😢6😁1🥱1
🐸 Подборка вакансий для C++-разработчиков за неделю

Техлид в Yandex Network Blockstore (C++) — до 440 000 ₽ Офис (Москва)

Инженер-программист C++ — от 180 000 и до 350 000 ₽ Офис/Гибрид (Москва)

C++ Developer Middle+ / Senior — Удалёнка

Server Programmer (C++) — от 250 000 и до 330 000 ₽ Удалёнка

C++ Developer — от 2500 и до 4000 $ Удалёнка

C++ разработчик (Поиск) — от 250 000 и до 400 000 ₽ Офис (Москва)

Библиотека C/C++ разработчика
👍3
🤓 Пока Python стал π-thon, ты можешь стать Data Scientist'ом

В Proglib.academy стартует экспресс-курс «Математика для Data Science»: 10 живых вебинаров, практика на Python и спикеры из ВШЭ, Яндекс Практикума и Wildberries, которые всё разложат по полочкам.

В программе:
🔹 матан, линал, теория вероятностей;
🔹 3 практических проекта + викторина с розыгрышем TG Premium;
🔹 поддержка преподавателей и чат с единомышленниками;

🎁 Оплати курс до 19 октября — получи курс по базовой математике в подарок.
🗓️ Старт — 6 ноября

👉 Записаться на курс
😁2
🍬 Потоки могут общаться через condition_variable

Чтобы один поток ожидал другого можно воспользоваться condition_variable.


🍴 Пошаговое решение:

1️⃣ Создайте condition_variable и mutex
2️⃣ Поток ждёт через wait()
3️⃣ Другой поток сигналит через notify_one/notify_all

#include <condition_variable>
#include <mutex>
#include <thread>
#include <iostream>

std::mutex mtx;
std::condition_variable cv;
bool ready = false;

void worker() {
std::unique_lock<std::mutex> lock(mtx);
cv.wait(lock, []{ return ready; }); // Ждём сигнала

std::cout << "Worker started!\n";
}

int main() {
std::thread t(worker);

std::this_thread::sleep_for(std::chrono::seconds(1));

{
std::lock_guard<std::mutex> lock(mtx);
ready = true;
}
cv.notify_one(); // Будим поток

t.join();
return 0;
}


❗️ Частая ошибка: Забыть проверять условие в wait()

💡 Совет: Всегда передавайте предикат в wait()


Библиотека C/C++ разработчика

#буст
Please open Telegram to view this post
VIEW IN TELEGRAM
2🙏1