tgindex
Senior C++ Developer

Senior C++ Developer

Статистика

Изучаем C++. По вопросам сотрудничества: @adv_and_pr РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba

Последний пост
15:17
Последнее чтение
19:53
Постов за неделю
5
Всего постов
23
Тип
открытый
Язык
русский
Категория
Технологии (по похожим)
В каталоге с
12 авг.
Подписчики
11 687
−1 за 4 дн.
Сутки
+2
+0,02%
Неделя
 
Месяц
 
Просмотров на пост
1 260
21 постов
Вовлечённость
10,8%
к подписчикам
Постов в день
0,7
всего 23
Упоминаний
1
каналов
Охват размещения
оценка
1/24сутки в ленте
832
1/48двое суток
953
1/72трое суток
1 028

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • 15:172621

    📣 Разместите рекламу в этом канале — её увидят Аудитория Telegram остаётся активной, что бы ни говорили. Индекс читаемости это подтверждает: охваты каналов по тематикам держатся, люди продолжают читать. Реклама в Telegram — это законно: ФАС в 2026 году официально подтвердил, что она разрешена. 👉 Заказать размещение в этом канале можно через Telega.in — с маркировкой и закрывающими документами, за пару минут. Форматы и цены — по ссылке.

  • #вопросы_с_собоседований В чем различия между delete и delete[]? delete предназначен для уничтожения объектов, память под которые выделена при помощи new(). delete[] для объектов выделенных при помощи оператора new[](). При неправильном использовании оператора delete (например, delete вместо delete[]) результат будет: undefined behavior.

  • Snake – искусственный интеллект для игры «Змейка» Цель змеи – постоянно есть пищу и как можно скорее заполнить карту своим телом Первоначально проект был написан на C++. Теперь он был переписан на Python с удобным графическим интерфейсом для пользователя https://github.com/chuyangliu/snake

  • 10 авг.1 0086

    ➡️ auto & decltype • auto-типизированные переменные выводятся компилятором на основе типа их инициализатора. • Чрезвычайно полезно с точки зрения удобочитаемости, особенно для сложных типов: // std::vector<int>::const_iterator cit = v.cbegin(); auto cit = v.cbegin(); // альтернатива // std::shared_ptr<vector<uint32_t>> demo_ptr(new vector<uint32_t>(0); auto demo_ptr = make_shared<vector<uint32_t>>(0); // альтернатива • Функции также могут выводить тип возвращаемого значения с помощью auto. В C++11 тип возвращаемого значения должен быть указан либо явно, либо с помощью decltype, например: template <typename X, typename Y> auto add(X x, Y y) -> decltype(x + y) { return x + y; } add(1, 2); // == 3 add(1, 2.0); // == 3.0 add(1.5, 1.5); // == 3.0 • Приведенная выше форма определения возвращаемого типа называется trailing return type, т.е. -> return-type.

  • 9 авг.1 04012

    ➡️ Модули (Modules) в C++ Модули - это система сборки и организации кода, представленная в C++20. • Они улучшают компиляцию и организацию кода, предоставляя более четкий и эффективный способ управления зависимостями. • Модули заменяют использование препроцессорных директив #include, улучшая время компиляции и предотвращая проблемы с зависимостями и макросами. • Модули значительно сокращают время компиляции по сравнению с традиционными заголовочными файлами, так как они компилируются только один раз. • Модули предотвращают проблемы, связанные с макросами и конфликтами имен, поскольку они предоставляют четкие границы и изолированные области видимости. • Модули упрощают управление зависимостями и организацию кода, что делает проекты более поддерживаемыми и масштабируемыми.

  • ➡️ Концепты (Concepts) в C++ Концепты - это новая возможность в C++20, которая позволяет задавать ограничения на шаблонные параметры. Это позволяет писать более безопасный и читаемый код, поскольку компилятор проверяет соответствие типов требованиям концептов на этапе компиляции. • template<typename T> concept Arithmetic = std::is_arithmetic_v<T>; определяет концепт Arithmetic, который ограничивает типы, для которых значение std::is_arithmetic_v<T> истинно (т.е. типы, которые являются арифметическими). • template<Arithmetic T> T add(const T& a, const T& b) определяет шаблонную функцию add, которая будет компилироваться только для типов, удовлетворяющих концепту Arithmetic. Использование функции add: • Примеры с целыми числами и числами с плавающей запятой успешно вызывают функцию add. • Пример со строками (закомментированный) вызовет ошибку компиляции, так как std::string не является арифметическим типом.

  • 6 авг.1 0438

    ➡️ Удаленные и дефолтные функции struct demo { demo() = default; }; demo d; • У вас вполне закономерно может возникнуть вопрос, зачем вам писать 8+ букв (т.е. = default;), когда можно просто использовать {}, т.е. пустой конструктор? Никто вас не останавливает. Но подумай о конструкторе копирования, операторе копирования присваиванием, и т.д. • Пустой конструктор копирования, например, не то же самое, что конструктор копирования по умолчанию (который будет выполнять почленную копию всех членов). • Вы можете ограничить определенную операцию или способ инстанцирования объекта, просто удалив соответствующий метод, как показано ниже: class demo { int m_x; public: demo(int x) : m_x(x){}; demo(const demo &) = delete; demo &operator=(const demo &) = delete; }; demo obj1{123}; demo obj2 = obj1; // ОШИБКА -- вызов удаленного конструктора копирования obj2 = obj1; // ОШИБКА -- оператор = удален 🗣️ В старом С++ вы должны были сделать его приватным. Но теперь в вашем распоряжении есть директива компилятора delete.

  • 4 авг.1 0716

    ➡️ Диапазоны и итераторы в C++ • В C++ стандартная библиотека шаблонов (STL) предоставляет мощные инструменты для работы с коллекциями данных. • Диапазоны и итераторы позволяют вам легко и эффективно перебирать элементы контейнеров, таких как векторы, списки и множества. • Использование диапазонов и итераторов делает код более чистым и читаемым, упрощает операции перебора и модификации элементов контейнеров.

  • 3 авг.1 1825

    ➡️ Делегирование конструкторов • В старом C++ вам нужно создавать функцию-член для инициализации и вызывать ее из всех конструкторов для достижения универсально инициализации. • Но начиная с C++11 конструкторы теперь могут вызывать другие конструкторы из того же класса с помощью списка инициализаторов.

  • 2 авг.1 1968

    Узнаем сколько лет человеку по дате его рождения Для расчета возраста человека по дате его рождения в C++ можно использовать следующий код В этом коде мы запрашиваем у пользователя его дату рождения, а затем получаем текущую дату с помощью функции time. Затем мы используем структуру tm для извлечения года, месяца и дня из текущей даты и вычисляем количество полных лет с помощью формулы now->tm_year + 1900 - year. Если текущий месяц и день меньше, чем месяц и день рождения, мы уменьшаем возраст на 1. Наконец, мы выводим результат на экран.

  • 1 авг.1 16011

    «Прозрачный промоушн выгоден и разработчику, и его тимлиду». Нюансы карьеры разработчика на С++ https://habr.com/ru/companies/kaspersky/articles/729620/

  • 30 июл.1 2494

    Алгоритм lower_bound Возвращает итератор, указывающий на первую позицию в отсортированной последовательности, ограниченной диапазоном [first, last), в которую можно вставить значение value, не нарушая упорядоченности.

  • 29 июл.1 3544

    Оператор присваивания ( = ), строго говоря, является бинарным оператором. Его объявление идентично объявлению любого другого бинарного оператора со следующими исключениями: ☑️ Он должен быть нестатической функцией-членом. ☑️ Он не наследуется производными классами. ☑️ Компилятор может создать функцию operator = по умолчанию для типов классов, если она не существует. В примере показано, как объявить оператор присваивания.

  • 27 июл.1 43615

    #вопросы_с_собеседований Напишите базовую реализацию std::shared_ptr. std::shared_ptr - умный указатель, который позволяет разделять владение объектом между несколькими shared_ptr. Когда последний shared_ptr уничтожается, он автоматически удаляет объект.

  • 25 июл.1 5965

    Подвох с указателями на Default Subobject Пожалуй, любой С++ разработчик на Unreal Engine имел дело с созданием Default Subobject в конструкторе. Через этот механизм, в частности, создаются компоненты по-умолчанию для акторов. Казалось бы, какие нюансы могут быть связаны с использованием такого стандартного функционала? Смотреть статью

  • 23 июл.1 6486

    Находим обратный массив в C++ Один из самых быстрых вариантов обратного массива в C++ предполагает использование двух указателей для итерации по массиву. Это обеспечивает линейную сложность O(n) и примерное время выполнения алгоритма равное O(n/2). Здесь мы создаем две переменные-указатели, start и end, которые начинаются с первого и последнего элемента соответственно. Затем мы проходим по массиву в цикле while, меняя местами элементы и увеличивая указатель start и уменьшая указатель end на каждой итерации.

  • 22 июл.1 5539

    Алгоритм move_backward Перемещает элементы одного итератора в другой. Перемещение начинается с последнего элементом в указанном диапазоне и завершается первым элементом в этом диапазоне.

  • 20 июл.1 5787

    Алгоритм fill_n Алгоритм используется для заполнения некоторых значений по умолчанию в контейнере. Он принимает начало итератора и количество позиций n в качестве аргументов и заполняет первую позицию n , начиная с позиции, указанной параметром begin , заданным значением. Синтаксис: void fill_n (начало итератора, int n, значение типа);

  • 17 июл.1 6526

    Изменяемые лямбда-функции Применения ключевого слова mutable используется для сохранения состояния в лямбда-функциях. Обычно оператор вызова функции замыкания является константным. Другими словами — лямбда не может модифицировать переменные, захваченные по значению. Но ключевое слово mutable может быть применено ко всей лямбда-функции, что сделает все её переменные изменяемыми. Следует заметить, что в отличии от mutable-переменных в объявлении класса, мутабельные лямбда-функции должны использоваться относительно редко и очень аккуратно. Сохранение состояния между вызовами лямбда-функции может быть опасным и контринтуитивным.

  • 15 июл.1 4905

    Структуры данных tuple Так же как и структура данных pair, структура данных tuple (кортеж) представляет собой коллекцию значений разных типов фиксированного размера. Пример на картинке. Иногда вместо структуры данных tuple удобнее использовать std::array. Эта структура данных похожа на простые массивы, используемые в языке C, снабжённые дополнительными возможностями из стандартной библиотеки C++. Эта структура данных появилась в C++ 11.