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

@itchannels_telegram - 🔥 best it channels

РКН: clck.ru/3FmxJF
Download Telegram
В какой строке есть ошибка компиляции?
Anonymous Quiz
31%
Во всех
16%
1
17%
2
16%
3
20%
Ни в какой
🤡35👍63😁3👎1
🖥 Не стоит проверять результат вызова malloc с помощью assert

Указатель, который вернула функция malloc, необходимо проверить перед использованием. Неправильным решением будет использовать для этого макрос assert.

Функция malloc возвращает нулевой указатель, если невозможно выделить буфер памяти указанного размера. Поэтому прежде, чем разыменовать указатель, его нужно проверить на равенство NULL, например так:
int *ptr = malloc(sizeof(int) * N);
if (!ptr)
{
// Обработка ошибки выделения памяти
}


🔗 Подробнее можно почитать тут

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13🔥311
📁 Мощный гайдлайн по C++ от самого Страуструпа

Здесь разобраны все самые важные понятия C++

Базовые конструкции C++
— Типы данных
— Ветвления и циклы
— Векторы и строки
— Составные типы данных
— Ссылки, указатели, константность
— Функции
— Шаблоны

Стандартная библиотека C++
— Последовательные контейнеры
— Ассоциативные контейнеры
— Алгоритмы
— Адаптеры и представления

Идиомы C++
— Классы
— Шаблонные классы
— Жизненный цикл объекта
— Наследование и полиморфизм
— Обработка исключений
— Идиома RAII и умные указатели

...и ещё много всего!

🔗 Гайдлайн

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍204🔥311
🖥 Крутые фичи C++, о которых ты мог не знать

☑️Псевдонимы типов
template <typename T>
using dyn_arr = std::vector<T>;
dyn_arr<int> nums; // эквивалентно std::vector<int>

using func_ptr = int (*)(int);

Семантически похоже на использование typedef, однако псевдонимы типов легче читаются и совместимы с шаблонами С++.

☑️Пользовательские литералы
using ull = unsigned long long;

constexpr ull operator"" _KB(ull no)
{
return no * 1024;
}

constexpr ull operator"" _MB(ull no)
{
return no * (1024_KB);
}

cout<<1_KB<<endl;
cout<<5_MB<<endl;

По большей части это будут какие-нибудь реальные единицы, такие как kb, mb, км, см, рубли, доллары, евро и т.д. Пользовательские литералы позволяют вам работать с ними как с другими примитивными типами.
Очень удобно для единиц и измерения.

☑️std::initializer_list
std::pair<int, int> p = {1, 2};
std::tuple<int, int> t = {1, 2};
std::vector<int> v = {1, 2, 3, 4, 5};
std::set<int> s = {1, 2, 3, 4, 5};
std::list<int> l = {1, 2, 3, 4, 5};
std::deque<int> d = {1, 2, 3, 4, 5};

std::array<int, 5> a = {1, 2, 3, 4, 5};

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

☑️auto & decltype
auto a = 3.14; // double
auto b = 1; // int
auto& c = b; // int&
auto g = new auto(123); // int*
auto x; // error -- `x` requires initializer

auto-типизированные переменные выводятся компилятором на основе типа их инициализатора

☑️Циклы for по диапазону
std::array<int, 5> a {1, 2, 3, 4, 5};
for (int& x : a) x *= 2;
// a == { 2, 4, 6, 8, 10 }


☑️Делегирование конструкторов
struct demo
{
int m_var;
demo(int var) : m_var(var) {}
demo() : demo(0) {}
};

demo d;

Конструкторы теперь могут вызывать другие конструкторы из того же класса с помощью списка инициализаторов.

Вообще, фичей у плюсов много, используй их для повышения производительности
Вот статья в тему 21 фича современного C++, которые вам обязательно пригодятся «https://habr.com/ru/companies/otus/articles/741428/»

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍134😐2
🖥 Вероятно, лучшие лекции по плюсам в Рунете от Владимирова К. И.

В этом сборнике по C++ на 600 страниц разбирается абсолютно всё, в том числе:

Основы C++:
Введение в C++
Синтаксис и структура программы на C++
Переменные, типы данных и операторы
Управляющие конструкции (условные операторы, циклы)

Функции и ООП:
Функции и их использование
Основы объектно-ориентированного программирования (ООП)
Классы и объекты
Наследование и полиморфизм

Указатели, массивы и структуры данных:
Указатели и ссылки
Динамическое выделение памяти
Массивы и строки
Стандартные шаблонные библиотеки (STL)

Исключения, обработка ошибок и шаблоны:
Исключения и обработка ошибок
Шаблоны (templates) и их применение
Обобщенное программирование

Файлы и потоки:
Работа с файлами и потоками в C++
Сериализация и десериализация данных

Многопоточное программирование:
Основы многопоточного программирования
Синхронизация потоков
Параллельные вычисления

Продвинутые темы:
Метапрограммирование
Рефлексия
Работа с внешними библиотеками (API)

🔜 PDF

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍205🔥5❤‍🔥2
🔥55😁424👍2🥰1🍌1
🖥 System2

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

https://github.com/Neko-Box-Coder/System2

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥211
🖥 Интересная задача по C++

Итак, нужно реализовать класс SmartArray (умный массив), который будет вести себя как обычный динамический массив, но при этом иметь следующие дополнительные возможности:
Автоматически увеличиваться в два раза при достижении текущего размера.
Автоматически уменьшаться в два раза, если количество элементов в массиве в 4 раза меньше, чем текущая емкость.
Поддерживать операции вставки, удаления и изменения элементов по индексу.

Придумал решение? Написал код? Тогда можешь смотреть

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20👎42🔥21
🔥Подборка лучших обучающих каналов для программистов.

➡️ Делитесь с коллегами и cохраняйте себе, чтобы не потерять

⚡️ Frontend
Javascript академия - крупнейший js канал
React - лучшие гайды и советы по работе с react
Frontend - тутрориалы, уроки, гайды, код
PHP
Книги frontend
Задачи frontend

🚀 Data Science

Анализ данных - полезные фишки, код, гайды и советы, маст-хэв датасаентиста
Data Jobs - ds вакансии
Аналитик данных
Data Science книги - актуальные бесплатные книги
Big data

#️⃣C#

С# академия
С# заметки — код, лучшие практики, заметки программиста c#
С# задачи и тесты
С# библиотека - актуальные бесплатные книги
C# вакансии - работа

Машинное обучение

Ml Собеседование - подготовка к собеседовению мл, алгоритмам, кодингу
Ml ru - актуальные статьи, новости, код и обучающие материалы
Ml Jobs - вакансии ML
ML Книги - актуальные бесплатные книги МО
ML чат
Machine Learning - полезные статьи новости гайды и разбор кода


🏆 Golang
Golang - подробные гайды, разбор кода, лучшие практики, заметки
Golang собеседование
Golang вакансии
Golang книги
Golang задачи и тесты
Golang чат
Golang news - новости go

🐍 Python

Python/django
Python Собеседование - подготовка к собеседовению python и разбор алгоритмов
Pro python - статьи, новости, код и обучающие материалы
Python Jobs - вакансии Python
Python чат
Python книги

Java

Java академия
Java вакансии
Java чат
Java вопросы с собеседований
Java книги

🛢Базы данных
Sql базы данных
Библиотека баз данных
SQL чат

💻 C++

C++ академия
С++ книги
C++ задачи - подготовка к собеседовению мл, алгоритмам
C++ вакансии

💥 Хакинг Kali Linux

Kali linux
linux_kal - kali чат
Информационная безопасность

🐧 Linux

Linux academy

🦀 Rust
Rust программирование
Rust чат
Rust книги для программистов

📲 Мобильная разработка
Android разработка
Мобильный разработчик гайды и уроки

🇬🇧 Английский для программистов

🧠 Искусственный интеллект
ИИ и технологии
Neural - нейросети для работы и жизни
Книги ИИ
Artificial Intelligence

🔥 DevOPs
Devops для программистов
Книги Devops

🌟 Docker/Kubernets
Docker
Kubernets

📓 Книги
Библиотеки Книг для программситов

💼 Папка с вакансиями:
Папка Go разработчика:
Папка Python разработчика:
Папка Data Science
Папка Java разработчика
Папка C#
Папка Frontend
🔥841👍1🥰1
🖥 Полезная подборка антипаттернов C++

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

📎 Подборка

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍171🔥1😁1
🔥 50 годных сайтов с ресурсами по изучению C++ (и C)

🟡https://www.w3schools.com/cpp/ — Туториал по C++ от W3Schools
🟡https://cppreference.com/ — Справочник по C++
🟡https://www.onlinegdb.com/ — Мой любимый компилятор и дебаггер C++
🟡https://www.hotscripts.com/category/c-cpp/scripts-programs/ — Сотни программ и скриптов на C и C++, всё удобненько разложено по категоориям
🟡https://sourceforge.net/directory/ — Больше 75К проектов, написанных на C/C++
🟡https://www.daniweb.com/tags/c/code — Полезные фрагменты кода
🟡https://programmersheaven.com/categories/candcpp Ресурсы для прокачивания плюсов
🟡https://www.codecogs.com/ CodeCogs — это совместная библиотека с открытым исходным кодом, числовые компоненты которой написаны на C/C++.
🟡https://developers.google.com/code-search/ — Поиск кода с помощью Google
🟡https://www.cis.temple.edu/~ingargio/cis71/code/ — Список простых C-шных программ, с них можно начинать изучение
🟡https://www.codeproject.com/?cat=2 — Много полезностей по C/C++

Остальные ссылки не влезают в пост, поэтому продолжение тут

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍136🔥4
TCP/IP сети и `Boost.Asio` — объяснение от Ричарда Томсона

Boost.Asio — это кроссплатформенная библиотека C++ для программирования сетей и низкоуровневого ввода-вывода, которая предоставляет разработчикам последовательную асинхронную модель с использованием современного подхода C++.

В этом видео Ричард Томсон покажет, как работать с Boost.Asio и TCP/IP. Расскажет, как реализовать клиент NNTP (Network News Transport Protocol) с помощью Boost.Asio. NNTP — это линейно-ориентированный протокол для чтения новостных статей usenet. Это даст нам представление обо всех типичных проблемах, связанных с сетевыми приложениями TCP/IP:
🔘Как преобразовать имя хоста в IP-адрес?
🔘Как установить долговременное соединение с сервером NNTP?
🔘Как обрабатывать произвольно большие объемы данных с NNTP-сервера, которые поступают асинхронно?
🔘Как координировать ввод данных пользователем с вводом/выводом NNTP?
🔘Как справляться с неожиданными сетевыми ошибками?

Очень полезное видео, рекомендую
Youtube

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍172🔥21
🖥 Чем отличаются ссылки от указателей в С++

В чем принципиальное отличие ссылки от указателя в С++? Какие ограничения есть у первых, а какие у вторых?

Вот некоторые из отличий::
🔘Нельзя объявить массив ссылок.
🔘У ссылки нет адреса.
🔘Существует арифметика указателей, но нет арифметики ссылок.
🔘Указатель может иметь «невалидное» значение с которым его можно сравнить перед использованием.

🔘Если вызывающая сторона не может не передать ссылку, то указатель может иметь специальное значение nullptr:
void f(int* num, int& num2)
{
if(num != nullptr) // if nullptr ignored algorithm
{
}
// can't check num2 on need to use or not
}


🔘Ссылка не обладает квалификатором const
#include <iostream>
int main()
{
std::cout << "Hello, world!\n";

const int v = 10;
//int& const r = v; // Ошибка
const int& r = v;

enum
{
is_const = std::is_const<decltype(r)>::value
};

if(!is_const)
std::cout << "const int& r is not const\n";
else
std::cout << "const int& r is const\n";
}


@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍133🔥21
🔥 Супер-годный контент по работе с корутинами в С++

Напомню самую основную инфо по корутинам:
*️⃣Для объявления корутины используется ключевое слово co_return. Оно позволяет вернуть значение из корутины в вызывающий код.
*️⃣Для ожидания результата работы другой корутины используется ключевое слово co_await. Оно приостанавливает выполнение текущей корутины и передает управление вызывающему коду. Когда результат работы другой корутины готов, выполнение текущей корутины возобновляется.
*️⃣Для создания дескриптора корутины используется функция std::coroutine_handle. Она принимает указатель на функцию-корутину и возвращает объект класса std::coroutine_handle.

Ну а в этой статье ты найдёшь подробное описание разных нюансов и подводных камней, в процессе автор пишет асинхронный веб-клиент

📎 Статья

@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1521🔥1🤮1