C++20 разрешил использовать
new и delete в constexpr-функциях. Звучит дико — как можно аллоцировать память, если программа ещё не запущена?constexpr int sum() {
int* p = new int(42);
int result = *p;
delete p;
return result;
}
constexpr int x = sum(); // OK в C++20new создаёт объект в памяти интерпретатора, delete помечает его как освобождённый. Никакой реальной аллокации не происходит.constexpr-контексте, должна быть освобождена до выхода из этого контекста. Нельзя «пронести» указатель в runtime:constexpr int* leak() {
return new int(42); // Ошибка: non-transient allocation
}constexpr std::vector работает: вектор аллоцирует в compile-time, используется, и деструктор освобождает. Но нельзя создать constexpr std::vector как глобальную переменную — деструктор вызовется, данные не переживут компиляцию.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#под_капотом
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9👏1🤔1😢1
Forwarded from Библиотека собеса по C++ | вопросы с собеседований
Что такое «срезка объекта» (object slicing) в контексте ошибок C++?
Anonymous Quiz
13%
Обрезание массива до указателя
18%
Удаление части памяти объекта
7%
Разрушение виртуальной таблицы
60%
Потеря данных производного класса
2%
Потеря константности объекта
👍2❤1🤔1
Forwarded from Азбука айтишника
🎓 Халява для новичков: Бесплатная база по Python и C++ с тонной практики
Забирайте отличный микросборник полностью бесплатных курсов на Stepik, где вас заставят кодить с первых минут.
👉 Забираем в закладки:
- C++
- Python
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
🏃♀️ Азбука айтишника
#магиякода
Забирайте отличный микросборник полностью бесплатных курсов на Stepik, где вас заставят кодить с первых минут.
Python: Мощный упор на практику 210 тестов и 243 интерактивные задачи. Программа построена грамотно: вас проведут от стартовой настройки PyCharm, систем счисления и таблицы ASCII через нюансы типа Decimal к серьезной работе с матрицами в NumPy и функциональным встроенным инструментам вроде map(), filter() и reduce().з
C++: Тоже не дадут расслабиться внутри 205 тестов и 197 интерактивных задач для жесткой прокачки синтаксиса и алгоритмического мышления.
👉 Забираем в закладки:
- C++
- Python
🔹 Курс «Программирование на языке Python»
🔹 Получить консультацию менеджера
🔹 Сайт Академии 🔹 Сайт Proglib
#магиякода
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥2👏1
👀 Практический курс «Разработка AI-агентов для автоматизации задач, работы и собственных проектов» со скидкой 40% до конца мая!
Мы поговорили с десятками разработчиков, учли главные боли индустрии и запускаем полностью обновленный курс «ИИ-агенты 5.0». 🎉
Что вы узнаете?
- Как радикально оптимизировать траты на токены.
- Как на практике оценивать качество и точность работы агента.
- Как «докручивать» RAG-системы без потери качества.
- Как обеспечить устойчивость агента к сбоям внешних сервисов без падения всей системы, и про многое-многое другое.
Спикеры — практики с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, Raft и Газпромбанк др.
Длительность: 6–12 недель в зависимости от тарифа.
👉 Занимайте место на главном агентском интенсиве по лучшей цене
Мы поговорили с десятками разработчиков, учли главные боли индустрии и запускаем полностью обновленный курс «ИИ-агенты 5.0». 🎉
Что вы узнаете?
- Как радикально оптимизировать траты на токены.
- Как на практике оценивать качество и точность работы агента.
- Как «докручивать» RAG-системы без потери качества.
- Как обеспечить устойчивость агента к сбоям внешних сервисов без падения всей системы, и про многое-многое другое.
Спикеры — практики с опытом в AI и Data Science в крупных IT-компаниях, таких как Яндекс, Сбер, Raft и Газпромбанк др.
Длительность: 6–12 недель в зависимости от тарифа.
👉 Занимайте место на главном агентском интенсиве по лучшей цене
❤1
Продолжаем серию о диапазонах — на очереди сортировка 🙂
Напомню:
std::ranges::* принимают диапазоны целиком и поддерживают проекции. Если пропустили предыдущий пост про алгоритмы поиска — начните с него.std::vector<int> v = {5, 3, 1, 4, 2};
std::ranges::sort(v); // {1, 2, 3, 4, 5}
std::ranges::sort(v, std::greater{}); // {5, 4, 3, 2, 1}Один аргумент вместо пары итераторов. Второй аргумент — компаратор:
std::greater{} для сортировки по убыванию, {} (или ничего) — по возрастанию.ranges::sort требует random access range — std::vector, std::array, std::deque подойдут, а std::list — нет (для него есть метод list::sort()).struct Task {
std::string name;
int priority;
};
std::vector<Task> tasks = {
{"Почта", 2}, {"Код", 1}, {"Тесты", 2}, {"Деплой", 1}
};
std::ranges::stable_sort(tasks, {}, &Task::priority);
// {{"Код", 1}, {"Деплой", 1}, {"Почта", 2}, {"Тесты", 2}}
// Элементы с одинаковым priority сохранили исходный порядокЕсли два элемента «равны» по компаратору,
stable_sort гарантирует, что их взаимный порядок останется таким же, как в исходном диапазоне. Обычный sort такой гарантии не даёт.std::vector<int> v = {5, 3, 1, 4, 2};
std::ranges::partial_sort(v, v.begin() + 3);
// {1, 2, 3, ?, ?} — первые три отсортированы, остальные в произвольном порядкеПолезно, когда нужен «топ-N» без затрат на полную сортировку. Сложность O(N·log(K)) вместо O(N·log(N)), где K — количество нужных элементов.
std::vector<int> v = {5, 3, 1, 4, 2};
std::vector<int> top3(3); // буфер под результат
std::ranges::partial_sort_copy(v, top3);
// top3 == {1, 2, 3}
// v не изменился: {5, 3, 1, 4, 2}Работает как partial_sort, но не трогает исходный диапазон — результат пишется в отдельный контейнер. Размер приёмника определяет K (сколько элементов попадёт в «топ»). Удобно, когда исходные данные нельзя модифицировать.
// Топ-2 самых старших — без изменения исходного вектора
std::vector<Person> oldest(2);
std::ranges::partial_sort_copy(people, oldest, std::greater{}, &Person::age);
std::vector<int> v = {5, 3, 1, 4, 2};
std::ranges::nth_element(v, v.begin() + 2);
// v[2] == 3 (медиана)
// Все элементы слева <= 3, справа >= 3, но внутри групп порядок произвольныйЭлемент на позиции N оказывается тем же, что стоял бы там после полной сортировки. Идеален для поиска медианы или перцентилей. Средняя сложность — O(N).
std::vector<int> a = {1, 2, 3, 4, 5};
std::vector<int> b = {1, 3, 2, 4, 5};
bool ok1 = std::ranges::is_sorted(a); // true
bool ok2 = std::ranges::is_sorted(b); // false
// Найти, где порядок нарушается
auto it = std::ranges::is_sorted_until(b);
// *it == 2 — первый элемент, нарушающий порядокis_sorted — быстрая проверка перед бинарным поиском или мержем. is_sorted_until возвращает итератор на первый элемент, который «ломает» порядок.struct Person {
std::string name;
int age;
};
std::vector<Person> people = {{"Алиса", 30}, {"Борис", 25}, {"Вера", 35}};
// Сортировка по возрасту — без лямбды
std::ranges::sort(people, {}, &Person::age);
// {{"Борис", 25}, {"Алиса", 30}, {"Вера", 35}}
// По убыванию возраста
std::ranges::sort(people, std::greater{}, &Person::age);
// Топ-2 самых старших
std::ranges::partial_sort(people, people.begin() + 2, std::greater{}, &Person::age);is_sorted — быстрая проверка перед бинарным поиском или мержем. is_sorted_until возвращает итератор на первый элемент, который «ломает» порядок.{} на месте компаратора означает std::less{} по умолчанию.📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥1
🚨 8 признаков, что тебя готовят к увольнению
В IT не принято говорить прямо. Поэтому вместо честного разговора тебе просто перестают давать важные задачи, убирают с ключевых встреч и начинают «оптимизировать расходы». Мы собрали 8 признаков, что компания уже приняла решение и просто ждет удобного момента.
👉 Подробнее...
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#буст
В IT не принято говорить прямо. Поэтому вместо честного разговора тебе просто перестают давать важные задачи, убирают с ключевых встреч и начинают «оптимизировать расходы». Мы собрали 8 признаков, что компания уже приняла решение и просто ждет удобного момента.
👉 Подробнее...
📍Навигация: Вакансии • Задачи • Собесы • Канал в Max
Библиотека C/C++ разработчика
#буст
🌚2