uz
Feedback
Библиотека C/C++ разработчика | cpp, boost, qt

Библиотека C/C++ разработчика | cpp, boost, qt

Kanalga Telegram’da o‘tish

Все самое полезное для плюсовика и сишника в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXSSA

Ko'proq ko'rsatish

📈 Telegram kanali Библиотека C/C++ разработчика | cpp, boost, qt analitikasi

Библиотека C/C++ разработчика | cpp, boost, qt (@cppproglib) Rus til segmentidagi kanali faol ishtirokchi. Hozirda hamjamiyat 16 868 obunachidan iborat bo'lib, Texnologiyalar & Aralashmalar toifasida 7 489-o'rinni va Rossiya mintaqasida 38 926-o'rinni egallagan.

📊 Auditoriya ko‘rsatkichlari va dinamika

невідомо sanasidan buyon loyiha tez o‘sib, 16 868 obunachiga ega bo‘ldi.

27 Avgust, 2026 dagi oxirgi ma’lumotlarga ko‘ra kanal barqaror faollikka ega. Oxirgi 30 kunda obunachilar soni -85 ga, so‘nggi 24 soatda esa 0 ga o‘zgardi va umumiy qamrov yuqori darajada qolmoqda.

  • Tasdiqlash holati: Tasdiqlanmagan
  • Jalb etish (ER): Auditoriya o‘rtacha 8.63% darajada jalb etiladi. Nashrdan keyingi dastlabki 24 soatda kontent odatda umumiy obunachilar sonining N/A% ini tashkil etuvchi reaksiyalarni to‘playdi.
  • Post qamrovi: Har bir post o‘rtacha 1 455 marta ko‘riladi; birinchi sutkada odatda 0 ta ko‘rish yig‘iladi.
  • Reaksiyalar va o‘zaro ta’sir: Auditoriya faol: har bir postga o‘rtacha 3 ta reaksiya keladi.
  • Tematik yo‘nalishlar: Kontent c++, навигация, компилятор, удалёнка, developer kabi asosiy mavzularga jamlangan.

📝 Tavsif va kontent siyosati

Muallif resursni shaxsiy fikrni ifoda etish maydoni sifatida ta’riflaydi:
Все самое полезное для плюсовика и сишника в одном канале. Как запустить своего ии-агента: https://clc.to/tvpmDQ По рекламе: @proglib_adv Для обратной связи: @proglibrary_feeedback_bot РКН: https://gosuslugi.ru/snet/67a5bac324c8ba6dcaa1ad17 #WXS...

Yuqori yangilanish chastotasi (oxirgi ma’lumot 28 Avgust, 2026 da olingan) sababli kanal doimo dolzarb va katta qamrovli bo‘lib qoladi. Analitika auditoriya kontent bilan faol hamkorlik qilishini, uni Texnologiyalar & Aralashmalar toifasidagi muhim ta’sir nuqtasiga aylantirishini ko‘rsatadi.

16 868
Obunachilar
Ma'lumot yo'q24 soatlar
-147 kunlar
-8530 kunlar
Postlar arxiv
🫖 Измеряем время затрачиваемое блокировками Автор статьи взял и замерил: mutex, futex, горячий atomic-спинлок — что сколько
🫖 Измеряем время затрачиваемое блокировками Автор статьи взял и замерил: mutex, futex, горячий atomic-спинлок — что сколько реально стоит в тактах, и когда какой примитив выбрать. ❗ Ключевые моменты статьи:std::mutex — стабильные ~25 накладных тактов, но 40 байт памяти на объект • futex через std::atomic wait/notify — ~14 тактов в удачном случае, но осторожно с contention • горячий спинлок — 2–4 такта накладных, однако может съесть всё ядро и заморозить владельца лока Основной фокус — бенчмарк на реальных данных: пул 128 МБ мелких защищённых объектов, два конкурирующих потока, измерение влияния cache-line соседства и contention. Спойлер из выводов: unique_ptr<mutex> — неплохой безопасный дефолт, с которого не стыдно начать. А futex стоит рассматривать только если память давит и вы точно замерили свой contention — иначе легко получить проигрыш там, где ждали выигрыш. 👉 Статья 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #линкер_рекомендует

-Wdouble-promotion -Wfloat-equal — float ловушки Floating-point арифметика полна сюрпризов. Два специализированных флага помогают найти неявные расширения float до double и опасные сравнения на равенство. 🏝 -Wdouble-promotion
float compute(float x) {
    return x * 3.14;   // Внимание! 3.14 — это double!
    // x неявно расширяется до double
}
 
// С -Wdouble-promotion:
// warning: implicit conversion increases floating-point precision
 
// ✅ Исправление:
return x * 3.14f;   // f-суффикс — явный float
☀️ -Wfloat-equal
double a = 0.1 + 0.2;
if (a == 0.3) {  // Почти никогда не выполнится!
    // 0.1 + 0.2 = 0.30000000000000004 в IEEE 754
}
 
// -Wfloat-equal: warning: comparing floating point with ==
 
// ✅ Правильно:
constexpr double EPS = 1e-9;
if (std::abs(a - 0.3) < EPS) { /* ... */ }
 
❗️ Для MSVC нету точного аналога, но похожего эффекта можно добиться с помощью /W4. 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #константная_правильность

🔧 std::enable_if_t для проверки иерархии классов Нужно убедиться, что класс является наследником другого? Проверяйте это на этапе компиляции с помощью type traits.
#include <type_traits>
#include <memory>

class Base {
public:
    virtual ~Base() = default;
};

class Derived : public Base {};
class Unrelated {};

// Фабрика, работающая только с наследниками Base
template<typename T>
std::enable_if_t<std::is_base_of_v<Base, T> && !std::is_same_v<Base, T>,
    std::unique_ptr<T>>
    createObject() {
    return std::make_unique<T>();
}

int main() {
    auto obj1 = createObject<Derived>();    // ✅ OK
    // auto obj2 = createObject<Unrelated>(); // ❌ Compile error
    // auto obj3 = createObject<Base>();      // ❌ Compile error
}
✅ Контроль иерархии классов на этапе компиляции 💰 Предотвращение неправильного использования API ⚡️Статическая проверка без runtime-затрат 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #междусобойчик

Что произойдёт при вызове foo()?
Anonymous voting

Какая функция позволяет узнать, находится ли выполнение в процессе раскрутки стека?
Anonymous voting

📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и инт
📰 Свеженькое из мира C++ Подготовили подборку самых интересных материалов за неделю о разных аспектах программирования и интересных проектах в мире C++. 😎 Интересное: Почему assert() убивает тесты, а ASSERT_EQ не трогает другие? — объяснение как работает проверка условий в Google Test Guidelines Support Library — библиотека от Microsoft позволяющая удобно проверять параметры Почему v.erase(remove(...)) быстрее цикла с erase()? — удобный и быстрый способ очистки массивов Нестандартная карьера: как оформить резюме, если ты свитчер — советы по организации резюме для разноплановых разработчиков Интересный софт за неделю — дайджест по софту за неделю 🔹📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #свежак

🧩 Выходной челлендж: 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++ разработчика #междусобойчик

Собираем фулл-хаус: 3 курса по цене 1 Хватит выбирать между «полезно», «модно» и «для души». Мы запустили механику, которая п
Собираем фулл-хаус: 3 курса по цене 1 Хватит выбирать между «полезно», «модно» и «для души». Мы запустили механику, которая позволяет собрать кастомный стек навыков без удара по бюджету: покупаете один курс — два других забираете бесплатно. Для тех, кто работает с производительностью, мастхэв — алгоритмы и структуры данных. Чтобы проектировать сложные системы грамотно — архитектура и шаблоны проектирования. Если интересна математическая «начинка» нейросетей — полный набор по AI: от углублённой математики и ML-старта до разработки автономных агентов. В качестве второго языка для быстрой разработки — обновлённый Python. Собрать свой пак

🔄 Нестандартная карьера: как оформить резюме, если ты свитчер Нестандартный карьерный трек — это одновременно твое преимущес
+1
🔄 Нестандартная карьера: как оформить резюме, если ты свитчер Нестандартный карьерный трек — это одновременно твое преимущество и главная проблема при поиске работы. Рассказываем, как оформить резюме свитчера так, чтобы разношерстный опыт выглядел как осознанное развитие, а не метания из стороны в сторону. 🐸 Библиотека программиста

😎 Топ-вакансий для C++ разработчиков за неделю Разработчик C++ — Удалёнка C++ Developer (Middle/Senior) — от 2 000 и до 4 000 $ Удалёнка System С++ Developer (General Components) — от 350 000 ₽ Удалёнка ✍️ Еще больше топовых вакансий — в нашем канале C++ jobs 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

🫖 Интересный софт за неделю • Windows Terminal, Console and Command-Line — современный терминал для Windows от Microsoft с п
🫖 Интересный софт за неделю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++ разработчика #линкер_рекомендует

🔥 Почему 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++ разработчика #константная_правильность

🔧 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++ разработчика #константная_правильность

🍬 Почему assert() убивает тесты, а ASSERT_EQ не трогает другие? assert() крашит процесс. ASSERT_EQ() — нет. Оба проверяют условия. В чём разница на уровне исполнения? Механизм обработки неудачи в Google Test построен на исключениях и return, а не на abort(). ⚡️ Как работает assert():
#define assert(expr) \
  ((expr) ? (void)0 : __assert_fail(...))
При провале вызывается __assert_fail(), которая делает abort() — немедленное завершение процесса. Никаких cleanup, никаких других тестов. 🔍 Как работает ASSERT_EQ:
#define ASSERT_EQ(a, b) \
  if (auto result = Compare(a, b); !result) { \
    RecordFailure(result); \
    return; // <-- ключевое!
  }
✏️ При провале: 1. Ошибка записывается в объект теста 2. Выполняется return из функции теста 3. Фреймворк перехватывает управление 4. Следующий тест запускается нормально 🪐 Технический нюанс: В helper-функциях ASSERT_* использует специальный механизм — макрос генерирует код, который бросает внутреннее исключение Google Test, если тест не void. Это позволяет прервать выполнение даже из вложенных функций. 🍋 Практический вывод: Никогда не используй assert() в production коде, который тестируешь — это помешает тестированию граничных случаев. Используй throw или возвращай error codes. В тестах всегда используй ASSERT_*/EXPECT_*, а не assert(). 📍Навигация: ВакансииЗадачиСобесы Библиотека C/C++ разработчика #буст

Что проверяет этот матчер?
Anonymous voting