C++ Academy
16.5K subscribers
619 photos
127 videos
1 file
583 links
По всем вопросам- @haarrp

@itchannels_telegram - 🔥 best it channels

РКН: clck.ru/3FmxJF
Download Telegram
🖥 Алгоритмы на С/С++

Задача о Ханойской башне
Быстрая сортировка (quick sort)
Бинарный поиск в отсортированном массиве
Сортировка методом выбора
Сортировка методом пузырька
Минимизация просмотров в методе сортировки пузырьком
Модифицированный метод пузырька
Сортировка методом вставок
Шейкер - сортировка

📌 источник

#алгоритмы #cpp #programming

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍313🔥3
Media is too big
VIEW IN TELEGRAM
🖥 Семантические процессы в C++
Лекция Константина Владимирова.

В языке C++ есть синтаксис и семантика.

Когда мы говорим о синтаксисе, мы говорим о контекстно-независимых конструкциях, которые просто что-то означают. Например, if — это всегда if.

Но когда мы говорим о семантике, мы сталкиваемся с необходимостью для компилятора что-то сделать или что-то выяснить: разрешить имя, инстанцировать шаблон, вывести тип, вычислить константное выражение.

Можно сказать что в каждый такой момент мы стартуем некий процесс, развивающийся по своим правилам.

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

🏆 источник

#лекции #cpp #programming

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍82🤩2
🖥 ​NVIDIA Warp

Мощный фреймворк Python для высокопроизводительного моделирования графического процессора и графики.

Ядра определяются в синтаксисе Python, а JIT преобразуются в C++/CUDA и компилируются во время выполнения.

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

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

#Python #Cuda #Cpp #Graphics #nvidia

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

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥93👍3
🖥 Метапрограммирование

1. Введение в шаблоны
2. C++20: requires keyword
3. C++20: concepts
4. Operator spaceship
5. ADL и CRTP
6 (семинар). Typelist
7. Traits, Policy Based Design, Mixins
8. Полиморфизм
9 (семинар). Реализация std::function
10 (семинар). Реализация std::any без виртуальных функций

📌 источник

#лекции #cpp #programming

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15🔥431
Основы программирования на С/C++

- Что такое IDE?
- Почему стоит изучать С++?
- Работа в Visual Studio C++ #1
- Первая программа на С++
#5 Escape последовательности и Raw-строки в C++
- Основные понятия языка С++
- Представление чисел в памяти компьютера
- Переменные и типы данных в С++
- Локальные и глобальные переменные
- Литералы
- Потоковый ввод вывод в С++
.
.
.
- Стек вызовов
- Перегрузка и шаблоны функций в С++
- Хвостовой возвращаемый тип в С++
- Параметры по умолчанию в функции С/С++
- Рекурсивные алгоритмы на языке С++
- Указатель на функцию в языке С++
- Динамическая память в языке С
- Динамическая память в языке C++
- Пример задачи на работу с динамической памятью в С++
- Двумерный динамический массивна Еськова. Основы программирования

✔️Доступно 56 видео

#cpp #programming
👍23🔥96🥱5🖕1🗿1
🛰 Space Game GUI

Космическая игра, написанная на C++. Неплохой проект для изучения основ геймдева.

Github

#cpp #programming #gamedev

@cpluspluc
👍20🔥74
🖥 Разница между неопределенным поведением и некорректно сформированными программами в C++. Старый и новый подход.

https://devblogs.microsoft.com/oldnewthing/20240802-00/

@cpluspluc

#cpp #programming
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83🔥1
🖥 Метод увеличения скорости обработки файлов.

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

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

Давайте углубимся и рассмотрим, как мы можем этого добиться.

https://cppstories.com/2024/cpp-query-file-attribs-faster/

#cpp #программирование

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥631
🖥 Курс по ООП в С++

- введение в программирование на С++
- инкапсуляция
- наследование
- полиморфизм
- шаблоны и метапрограммирование

📌источник

#cpp #programming

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2912🔥82😁2
🖥 Выпущен RmlUi 6.0 - Библиотека пользовательского интерфейса на C++, основанная на HTML и CSS

https://github.com/mikke89/RmlUi/releases/tag/6.0

#cpp #lua #программирование #релиз

Github
Docs

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
12🔥7👍3
🕹️ Game Engine С++

01. Game Engine hardCORE серии. Promo
02. Сборка C++ проектов. Препроцессинг.
03. Сборка C++ проектов. Компиляция. Ассемблер. Теория.
04. Сборка C++ проектов. Оптимизации компилятора. Inline, constexpr, alignment.
05. Сборка C++ проектов. Linker. Forward declaration.
06. Сборка C++ проектов. Static/dynamic libraries. PCH. Unity (JUMBO) build.

📌 источник

#cpp #programming #ue5 #unrealengine

@cpluspluc
🔥17👍53❤‍🔥1🤔1
🖥 Полезная Шпаргалка по паттернам проетирования

Представляем удобную шпаргалку-репозиторий по 23 популярным паттернам. У каждого будет краткое описание со схемой и полезные ссылки, а также примеры с кодом на четырёх языках: C++, Java, C#, Python.

#шпаргалка #паттерны #ru #cpp

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍14🔥145😁1
🖥 Руководство по написанию и запуску вашего первого проекта на C++ с помощью CMake

https://youtube.com/embed/-l4FwbsmAis

#cpp #программирование

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍22🔥74
Cpp_refcard.pdf
24.1 KB
🖥 Большая шпаргалка по C++.

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

Вы можете использовать ее во время обучения, перед собеседованиями или же просто чтобы освежить знания.

🎯 Шпаргалка

Сохранйте себе, чтобы не потерять.

#шпаргалка #cpp база

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥103🥰2
✔️ RTranslator — работающее локально, приложение для перевода в реальном времени с открытым исходным кодом для Android.

⚙️ GitHub

#java #cpp #python #android

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍18🔥53
👩‍💻 🖥 CUDA Programming Course – High-Performance Computing with GPUs

Свежий Бесплатный курс от freeCodeCamp по программированию CUDA.

Этот 12 -ти часовой бесплатный курс научит вас программировать с помощью Nvidia CUDA и использовать графические процессоры для высокопроизводительных вычислений и Deep learning.

Содержание:
🔜 (0:00:00) Вступление
🔜 (0:16:52) Глава 1 (Экосистема глубокого обучения)
🔜 (0:37:43) Глава 2 (Настройка CUDA)
🔜 (0:47:03) Глава 3 (Обзор C/C++)
🔜(1:35:47) Глава 4 (Введение в графические процессоры)
🔜 (1:51:40) Глава 5 (Написание ваших первых ядер)
🔜 (3:55:26) Глава 6 (CUDA API)
🔜 (5:35:22) Глава 7 (Быстрое умножение матриц)
🔜 (8:22:36) Глава 8 (Triton)
🔜 (9:04:43) Глава 9 (Расширения PyTorch)
🔜 (9:18:10) Глава 10 (Многослойный персептрон MNIST)
🔜 (11:41:13) Глава 11 (Что изучать дальше?)
🔜 (11:54:38) Заключение

Video:
https://www.youtube.com/watch?v=86FAWCzIe_4
Code:
https://github.com/Infatoshi/cuda-course
Github
https://github.com/Infatoshi/mnist-cuda

#cuda #deeplearning #cpp #c #bigdata #courses #бесплатныйкурс


@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥25👍122🆒1
🖥 Это - серия видео, посвященных разработке воксельного движка, напоминающего механику игры Minecraft, с использованием языка программирования C++!

🔗 Ссылка: *клик*

#курс #cpp

freecourses
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥17👍64
Когда впервые сталкиваешься с type_traits в C++, они кажутся чем-то из мира метапрограммирования для продвинутых Сеньоров.

Но чем глубже разбираешься в плюсах, тем чаще ловишь себя на мысли: «А как вообще этот кусок кода собирается?», «Почему одна перегрузка сработала, а другая нет?», «Как можно элегантно отфильтровать типы на этапе компиляции?»

И тут внезапно узнаешь, что именно type_traits — это та самая опора, с которой можно решать такие задачи красиво и без хаков. Особенно если писать универсальный код, библиотеки, или хочешь просто понимать, как работает стандартная библиотека.

Сегодня прочитал пост Вани Ходора, бэкенд-разработчика из Яндекс Лавки, который как раз сделал гайд по type_traits — не про то, *что* они делают, а за что их можно полюбить. Не учебник, не документация, а маленькое путешествие по любимым трейтам с примерами, идеями и попытками реализации.

Будет полезно, даже если вы давно знакомы с шаблонами — с другой стороны посмотрите на знакомые конструкции, а может, и вдохновитесь на свой маленький эксперимент в шаблонном коде.
❤‍🔥6🔥42🥰1🎉1
🧠 Продвинутая задача на C++ — Оптимальный доступ к матрице с кешированием

Задача:
У вас есть матрица N x M, хранящаяся в виде одномерного массива (row-major).
Нужно реализовать класс Matrix, поддерживающий:
- Быстрый доступ get(i, j) и set(i, j, value)
- Локальность данных при сканировании по строкам и по столбцам
- При этом: сравнить производительность строкового и столбцового прохода


int main() {
Matrix mat(10000, 10000);
// Заполнить матрицу числами
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
mat.set(i, j, i + j);

// Сумма по строкам
long long row_sum = 0;
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
row_sum += mat.get(i, j);

// Сумма по столбцам
long long col_sum = 0;
for (int j = 0; j < 10000; ++j)
for (int i = 0; i < 10000; ++i)
col_sum += mat.get(i, j);
}


Вопрос:
Почему сканирование по строкам быстрее, чем по столбцам, даже если данные одинаковые?

---

Разбор:


class Matrix {
private:
int rows, cols;
std::vector<int> data;

public:
Matrix(int r, int c) : rows(r), cols(c), data(r * c) {}

int get(int i, int j) const {
return data[i * cols + j];
}

void set(int i, int j, int value) {
data[i * cols + j] = value;
}
};


Ответ:
Память в C++ выделяется линейно.
В std::vector<int> data, элементы строки хранятся подряд в памяти.
То есть mat[0][0], mat[0][1], ..., mat[0][9999] идут подряд.

Когда мы сканируем по строкам, процессор использует кеш строк памяти эффективно.
Когда же мы сканируем по столбцам, мы прыгаем по памяти через cols шагов → кеш не успевает подгружать нужные блоки → больше cache misses → медленнее.

---

🧠 Вывод:
- Даже при правильном коде, порядок доступа к памяти критически важен
- Понимание устройства кеша CPU помогает писать реально быстрый код
- Такие задачи полезны для подготовки к системному программированию, оптимизации и собеседованиям

#cpp #performance #cache #memory #optimize
13🔥4👍1🥰1