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

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

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

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

РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17

#WXSSA
Download Telegram
🔧 Guidelines Support Library: как Microsoft проверяет параметры

GSL — это не просто модная библиотека. Это набор практик от создателей C++, упакованный в код😎

#include <gsl/gsl>

// Традиционная проверка
void setAge(Person& p, int age) {
if (age < 0 || age > 150) {
throw std::invalid_argument("Invalid age");
}
p.age = age;
}

// GSL: семантика ясна из кода
void setAge(Person& p, int age) {
Expects(age >= 0 && age <= 150); // Precondition
p.age = age;
Ensures(p.age == age); // Postcondition
}


❗️Что даёт GSL:

Expects() — preconditions (проверка входа)
Ensures() — postconditions (проверка выхода)
gsl::not_null<T*> — указатель, который не может быть null

void process(gsl::not_null<int*> data) {
// Компилятор гарантирует: data != nullptr
*data = 42; // Безопасно без if
}


‼️ В debug режиме — runtime проверки, в release — могут быть отключены.

👉 Библиотека

📍Навигация: ВакансииЗадачиСобесы

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

#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🙏2
🔥 Почему v.erase(remove(...)) быстрее цикла с erase()?

Разница может быть существенной на больших векторах. Дело в количестве сдвигов памяти.

🍬 Наивный подход:

for (auto it = v.begin(); it != v.end(); ) {
if (*it == target)
it = v.erase(it); // каждый раз сдвиг O(n)
else
++it;
}


Если удаляешь k элементов из вектора размера n, получаешь O(k×n) операций копирования. При k≈n/2 это O(n²).

⚡️ Erase-remove idiom:

v.erase(std::remove(v.begin(), v.end(), target), v.end());


remove() делает O(n) перемещений, erase() делает один сдвиг хвоста O(n). Итого O(n) вместо O(n²).

❗️Вывод: Это не микрооптимизация, а правильный алгоритм. При удалении из середины вектора — всегда используй erase-remove.

📍Навигация: ВакансииЗадачиСобесы

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

#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
💯5👍4
🫖 Интересный софт за неделю

Windows Terminal, Console and Command-Line — современный терминал для Windows от Microsoft с поддержкой вкладок, тем и Unicode
F´ (fprime) — фреймворк NASA для компонентного бортового ПО встраиваемых систем
Filament — движок PBR-рендеринга Google для мобильных и веб-приложений
RunAnywhere SDKs — SDK для локального ИИ на iOS/Android с оптимизацией LLM
ёRadio — веб-радиоприемник на ESP32 с поддержкой дисплеев и MQTT
XGBoost — библиотека градиентного бустинга для эффективного ML на больших данных
MLX — фреймворк Apple ML на Metal для Apple Silicon без CUDA
BehaviorTree.CPP — библиотека деревьев поведения для робототехники и ИИ на C++
Piper — нейронная TTS-система для быстрого оффлайн-синтеза речи
GPT4All — платформа для локального запуска LLM с приватностью и GPU-поддержкой

📍Навигация: ВакансииЗадачиСобесы

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

#линкер_рекомендует
🥰1😁1
😎 Топ-вакансий для C++ разработчиков за неделю

Разработчик C++ — Удалёнка

C++ Developer (Middle/Senior) — от 2 000 и до 4 000 $ Удалёнка

System С++ Developer (General Components) — от 350 000 ₽ Удалёнка

✍️ Еще больше топовых вакансий — в нашем канале C++ jobs

📍Навигация: ВакансииЗадачиСобесы

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

#буст
1😁1
Forwarded from Библиотека программиста | программирование, кодинг, разработка
🔄 Нестандартная карьера: как оформить резюме, если ты свитчер

Нестандартный карьерный трек — это одновременно твое преимущество и главная проблема при поиске работы.

Рассказываем, как оформить резюме свитчера так, чтобы разношерстный опыт выглядел как осознанное развитие, а не метания из стороны в сторону.

🐸 Библиотека программиста
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1👍4😁2🥱2
Собираем фулл-хаус: 3 курса по цене 1

Хватит выбирать между «полезно», «модно» и «для души». Мы запустили механику, которая позволяет собрать кастомный стек навыков без удара по бюджету: покупаете один курс — два других забираете бесплатно.

Для тех, кто работает с производительностью, мастхэв — алгоритмы и структуры данных. Чтобы проектировать сложные системы грамотно — архитектура и шаблоны проектирования.

Если интересна математическая «начинка» нейросетей — полный набор по AI: от углублённой математики и ML-старта до разработки автономных агентов.

В качестве второго языка для быстрой разработки — обновлённый Python.

Собрать свой пак
😁2
🧩 Выходной челлендж: noexcept или не noexcept?

Многие добавляют noexcept "на глаз". А ты знаешь, где это критично?

class DataStore {
std::vector<int> data;
public:
DataStore() = default;

DataStore(DataStore&& other) {
data = std::move(other.data);
}

void add(int value) {
data.push_back(value);
}
};


Задача: В какие методы нужно добавить noexcept и почему?

Подсказка: один из них критически важен для производительности при работе с контейнерами STL.

💬 Делись своими мыслями! Объясни не только ЧТО добавить, но и ПОЧЕМУ это важно.

📍Навигация: ВакансииЗадачиСобесы

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

#междусобойчик
👍1