🤡35👍6⚡3😁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🔥3⚡1❤1
Здесь разобраны все самые важные понятия 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
👍20❤4🔥3✍1⚡1
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👍13❤4😐2
В этом сборнике по C++ на 600 страниц разбирается абсолютно всё, в том числе:
Основы C++:
Введение в C++
Синтаксис и структура программы на C++
Переменные, типы данных и операторы
Управляющие конструкции (условные операторы, циклы)
Функции и ООП:
Функции и их использование
Основы объектно-ориентированного программирования (ООП)
Классы и объекты
Наследование и полиморфизм
Указатели, массивы и структуры данных:
Указатели и ссылки
Динамическое выделение памяти
Массивы и строки
Стандартные шаблонные библиотеки (STL)
Исключения, обработка ошибок и шаблоны:
Исключения и обработка ошибок
Шаблоны (templates) и их применение
Обобщенное программирование
Файлы и потоки:
Работа с файлами и потоками в C++
Сериализация и десериализация данных
Многопоточное программирование:
Основы многопоточного программирования
Синхронизация потоков
Параллельные вычисления
Продвинутые темы:
Метапрограммирование
Рефлексия
Работа с внешними библиотеками (API)
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20❤5🔥5❤🔥2
Небольшая библиотека для кроссплатформенного запуска команд оболочки, которая может считывать стандартный вывод, выполнять асинхронный запуск и т.д...
https://github.com/Neko-Box-Coder/System2
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍11🔥2⚡1❤1
Итак, нужно реализовать класс
SmartArray
(умный массив), который будет вести себя как обычный динамический массив, но при этом иметь следующие дополнительные возможности:Придумал решение? Написал код? Тогда можешь смотреть
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍20👎4⚡2🔥2❤1
🔥Подборка лучших обучающих каналов для программистов.
➡️ Делитесь с коллегами и 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
➡️ Делитесь с коллегами и 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
🔥8❤4⚡1👍1🥰1
60 антипаттернов и вредных советов для С++ программиста с подробными пояснениями.
В пояснениях можно найти интересную информацию.
В некоторых местах разбираются неочевидные нюансы C++; про них будет интересно почитать и опытным разработчикам.
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17❤1🔥1😁1
https://www.w3schools.com/cpp/
— Туториал по C++ от W3Schoolshttps://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/
— Поиск кода с помощью Googlehttps://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
👍13❤6🔥4
TCP/IP сети и `Boost.Asio` — объяснение от Ричарда Томсона
В этом видео Ричард Томсон покажет, как работать с
🔘 Как преобразовать имя хоста в IP-адрес?
🔘 Как установить долговременное соединение с сервером NNTP?
🔘 Как обрабатывать произвольно большие объемы данных с NNTP-сервера, которые поступают асинхронно?
🔘 Как координировать ввод данных пользователем с вводом/выводом NNTP?
🔘 Как справляться с неожиданными сетевыми ошибками?
Очень полезное видео, рекомендую
⏩ Youtube
@cpluspluc
Boost.Asio
— это кроссплатформенная библиотека C++ для программирования сетей и низкоуровневого ввода-вывода, которая предоставляет разработчикам последовательную асинхронную модель с использованием современного подхода C++.В этом видео Ричард Томсон покажет, как работать с
Boost.Asio
и TCP/IP. Расскажет, как реализовать клиент NNTP (Network News Transport Protocol) с помощью Boost.Asio
. NNTP — это линейно-ориентированный протокол для чтения новостных статей usenet
. Это даст нам представление обо всех типичных проблемах, связанных с сетевыми приложениями TCP/IP:Очень полезное видео, рекомендую
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍17⚡2🔥2❤1
В чем принципиальное отличие ссылки от указателя в С++? Какие ограничения есть у первых, а какие у вторых?
Вот некоторые из отличий::
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
👍13❤3🔥2⚡1
Напомню самую основную инфо по корутинам:
co_return
. Оно позволяет вернуть значение из корутины в вызывающий код.co_await
. Оно приостанавливает выполнение текущей корутины и передает управление вызывающему коду. Когда результат работы другой корутины готов, выполнение текущей корутины возобновляется.std::coroutine_handle
. Она принимает указатель на функцию-корутину и возвращает объект класса std::coroutine_handle
.Ну а в этой статье ты найдёшь подробное описание разных нюансов и подводных камней, в процессе автор пишет асинхронный веб-клиент
@cpluspluc
Please open Telegram to view this post
VIEW IN TELEGRAM
👍15❤2⚡1🔥1🤮1