C++ Learning


Гео и язык канала: Россия, Русский
Категория: Образование


№ 4974310652
Обучающий канал по C++
По всем вопросам @mascarov_valentin
Реклама на бирже - https://telega.in/c/Learning_pluses

Зарегистрирован в РКН
Связанные каналы  |  Похожие каналы

Гео и язык канала
Россия, Русский
Категория
Образование
Статистика
Фильтр публикаций


🤔 Как это работает? — Передача аргументов в C++

В C++ аргументы функции можно передавать по значению, по ссылке и по константной ссылке. Эти подходы влияют на производительность и безопасность. Давайте разберём, как это работает.

➡️ Как это работает:

Передача по значению: создаёт копию объекта, что может быть дорого для больших объектов.
Передача по ссылке: передаёт ссылку на объект, избегая копирования.
Передача по константной ссылке: добавляет защиту от изменения объекта внутри функции.

Развернутый аналог:
void modifyValue(const int &value) {
// value нельзя изменить
}

C++ Learning 👩‍💻


Онлайн-магистратура для C++-разработчиков 

На программе ИТМО в партнерстве с Яндекс Практикумом завершается прием в онлайн-магистратуру «Фронтенд-, бэкенд-разработка и ИИ-решения». Внутри – девять треков, в том числе продвинутый C++ с Boost, асинхронный бэкенд, высоконагруженные системы и ИИ-разработка.

Учиться можно по вечерам, совмещая магистратуру с работой (так уже делают 82% студентов). За два года можно собрать 10+ практических кейсов, а на выходе будет диплом магистра ИТМО и диплом о профпереподготовке от Яндекса.

Подробнее о программе и поступлении


➡️ auto & decltype

• auto-типизированные переменные выводятся компилятором на основе типа их инициализатора.
• Чрезвычайно полезно с точки зрения удобочитаемости, особенно для сложных типов:

// std::vector::const_iterator cit = v.cbegin();
auto cit = v.cbegin(); // альтернатива

// std::shared_ptr demo_ptr(new vector(0);
auto demo_ptr = make_shared(0); // альтернатива

• Функции также могут выводить тип возвращаемого значения с помощью auto. В C++11 тип возвращаемого значения должен быть указан либо явно, либо с помощью decltype, например:

template
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.

C++ Learning 👩‍💻


⚙️ std::iota

std::iota — алгоритм из библиотеки , который заполняет диапазон значениями, начиная с указанного стартового числа, увеличивая его на 1 для каждого следующего элемента.

Это полезно для генерации простых последовательностей чисел, индексов, номеров строк, тестовых данных без ручных циклов.

C++ Learning 👩‍💻


🔥 Три разных человека. Три разных проекта. Один и тот же подход.

— Юра взял «скучную» нишу с готовым спросом → сначала печальные $100/мес, через год уже ~$10K/мес
— Денис сделал Telegram-игру в одиночку на основе AI → ~ $1500 за 1,5 месяца после запуска
— Аня без кода запустила AI-бота для изучения английского → первые ~$200 уже в 1 месяц

Разные результаты. Разный масштаб. Но общие правила:

1. не придумывать «гениальную идею», а брать существующий спрос
2. делать простой MVP и быстро запускаться
3. докручивать монетизацию и продукт по факту использования

Ребята сделали всё без команды, без инвестиций, а самое главное — без ожидания «идеального момента». Да, не у всех получается сразу. И не у всех выходит на $10K. Но если системно идти по схеме выше — появляется первый доход с продукта, а дальше уже есть что масштабировать.

В комьюнити разбираем такие кейсы регулярно: @its_capitan. Что сработало, что нет, и почему.

Реклама: ИП Зуев Игорь Владимирович, ИНН: 360408359441, Erid: 2VtzqxWHCtS


⚙️ std::lcm

std::lcm вычисляет наименьшее общее кратное (НОК) двух чисел. Это полезно для задач на синхронизацию событий, работы с дробями и математических расчётов.

C++ Learning 👩‍💻


⚙️ std::gcd

std::gcd вычисляет наибольший общий делитель (НОД) двух чисел. Это полезно для задач на делимость, сокращения дробей и численных алгоритмов.

C++ Learning 👩‍💻


Недавние математические интриги вокруг OpenAI снова подняли вопрос: ИИ действительно решает сложные задачи или просто находит готовые доказательства в уже существующих текстах?

В любом случае без математики тут никуда: алгоритмы, логика, доказательства, проверка гипотез — всё это база сильного разработчика.

В канале «Зачем мне эта математика?» такие истории разбирают понятно: от задач Эрдёша до ML и графов.

Подписывайтесь!


⚙️ std::exchange

std::exchange заменяет значение переменной на новое и возвращает старое. Это полезно для сброса состояния, перемещения значений и написания атомарных операций.

C++ Learning 👩‍💻


⚙️ std::clamp

std::clamp ограничивает значение в пределах заданного диапазона. Это полезно для валидации чисел, нормализации данных и защиты от выхода за границы.

C++ Learning 👩‍💻


⚙️ std::launder

std::launder (C++17) используется для безопасного доступа к объекту после его повторной инициализации в той же памяти с помощью placement new. Это важно при низкоуровневых операциях, связанных с ручным управлением жизненным циклом объектов.

C++ Learning 👩‍💻


⚙️ std::unexpected

std::unexpected (устаревший в C++17, но интересный исторически) используется для установки обработчика непредусмотренных исключений, выбрасываемых функциями с noexcept(false) или throw()-спецификацией. Полезно для отладки и контроля исключений в старом коде.

C++ Learning 👩‍💻


⚙️ std::default_sentinel

std::default_sentinel (C++20) представляет универсальный конец диапазона и используется с пользовательскими итераторами и ranges. Это полезно для создания "открытых" и ленивых представлений данных.

C++ Learning 👩‍💻


⚙️ std::to_address()

std::to_address() (C++20) извлекает обычный указатель из объекта-итератора или умного указателя. Это полезно для универсальной работы с памятью без зависимости от типа указателя.

C++ Learning 👩‍💻


⚙️ std::uninitialized_default_construct_n

std::uninitialized_default_construct_n (C++17) вызывает default-конструкторы объектов в необработанном блоке памяти без инициализации значений. Это полезно при ручном управлении памятью и написании аллокаторов или контейнеров.

C++ Learning 👩‍💻


⚙️ std::bit_width()

std::bit_width() (C++20) возвращает минимальное количество бит, необходимое для представления значения. Это полезно при работе с битовыми структурами, алгоритмами сжатия, хэшированием и оптимизацией памяти.

C++ Learning 👩‍💻


⚙️ std::is_constant_evaluated()

std::is_constant_evaluated() (C++20) позволяет определить, выполняется ли код в рамках constexpr-вычисления. Это полезно для написания функций, ведущих себя по-разному на этапе компиляции и выполнения.

C++ Learning 👩‍💻


⚙️ std::stacktrace

std::stacktrace (C++23) позволяет получить стек вызовов прямо во время выполнения. Это полезно для логирования, отладки, генерации crash-репортов и встроенных диагностик — прямо в продакшене.

C++ Learning 👩‍💻


⚙️ std::move_only_function

std::move_only_function (C++23) — это аналог std::function, но с поддержкой только перемещаемых (не копируемых) замыканий. Полезно для высокопроизводительных сценариев и перемещаемых лямбд с захваченными уникальными ресурсами (std::unique_ptr, сокеты и т.д.).

C++ Learning 👩‍💻


⚙️ std::unordered_map::emplace_hint()

std::unordered_map::emplace_hint() позволяет вставлять элементы в хеш-таблицу с подсказкой для оптимизации. Это особенно полезно, если известно, куда примерно должен встать новый элемент, ускоряя операцию вставки.

🔗 Документация

C++ Learning 👩‍💻

Показано 20 последних публикаций.