Уютное сообщество С++ разработчиков
4.45K subscribers
94 photos
7 videos
96 links
Изучаем C++.
Ресурсы, обучения, задачи, шпаргалки.
Вопросы с собеседований по C++ и ответы на них.
Задачи и тесты по C++ для тренировки и обучения.
По рекламе: @anothertechrock
Download Telegram
Статья дня. Пять продвинутых техник инициализации в C++: От reserve() до piecewise_construct

В статье рассмотрены несколько продвинутых методов инициализации: от reserve() и emplace_back для контейнеров, до piecewise_construct и forward_as_tuple для кортежей. Благодаря этим техникам можно уменьшить количество временных объектов и более эффективно создавать переменные.

Читать статью

#читать
Статья дня. 10 лучших идей C++ проекта для начинающих

Чтобы попрактиковаться в изучении C++, вы можете выполнять множество проектов от простого до продвинутого. Каждый из этих проектов научит вас чему-то новому, чтобы вы были знакомы с наиболее важными темами, которые всегда будут вам полезны при создании реальных проектов.

Читать статью

#читать
Статья дня. 🛠 Основы move semantics в C++

В этой статье мы поговорим о том, что такое move semantics, зачем и когда она нужна, и как при помощи этого механизма оптимизировать программы на C++.

Читать статью

#читать
Статья дня. 📖 ТОП-10 книг по C++, вышедших за последние 2 года: от новичка до профессионала

Хотя есть онлайн-ресурсы для изучения C++, многие разработчики по-прежнему предпочитают книги. Несмотря на изобилие классических пособий, за последние 2 года опубликовано множество превосходных книг по этому языку. В небольшом обзоре мы отобрали десять лучших.

Читать статью

#читать
Шпаргалка по C++

Эта статья даёт сжатый обзор основ современного C++. Шпаргалка фокусируется на языке, а не стандартной библиотеке, и учитывает особенности C++11/C++14.

Посмотреть
👍5
Обмен значений двух переменных с помощью XOR

Этот метод является быстрым и не требует использования 3-й переменной.
#код
👍104
Какая разница между calloc и malloc?

Основное различие между функциями calloc и malloc заключается в том, как они инициализируют выделенную память.

malloc просто выделяет указанный объем памяти и возвращает указатель на него. Содержимое выделенной памяти при этом не инициализируется.
calloc, помимо выделения памяти, также инициализирует всю выделенную память нулями. Таким образом после вызова calloc вся выделенная память будет заполнена нулевыми значениями.

Кроме того, в calloc размер выделяемой памяти задается в элементах, а не в байтах. Calloc умножает количество элементов на размер одного элемента, чтобы определить общий размер памяти для выделения.

#вопросы_с_собеседований
Какие есть способы инициализации полей класса?

В C++ есть несколько способов инициализации полей класса:

— Конструктор: в конструкторе класса можно присвоить начальные значения полям.

— Инициализаторы: можно задать начальные значения для полей непосредственно при их объявлении в классе.

— Инициализационный список: позволяет проинициализировать поля до вызова тела конструктора.

— Значения по умолчанию: для базовых типов компилятор сам присвоит значения по умолчанию, если не указано иное.

— Статическая инициализация: для статических полей класса можно задать начальное значение непосредственно при объявлении.

Каждый из этих способов имеет свои особенности и подходит для разных случаев инициализации полей класса.

#вопросы_с_собеседований
Вложенные пространства имен (nested namespaces)

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

nested namespaces часто используются в больших проектах, при создании библиотек, а также для версионирования.
#код
Статья дня. 7 способов сортировки массивов на примере С++ с иллюстрациями

В этой статье продемонстрируем на иллюстрациях, как работают алгоритмы сортировки: от простейшей пузырьковой до сложной древовидной кучи. Также определим сложность худших и лучших случаев, а код напишем на С++.

Читать статью

#читать
👍2👌1
Возможно ли иметь рекурсивную встроенную функцию?

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

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

#вопросы_с_собеседований
👍1
forward_list

forward_list — это контейнер, который поддерживает быструю вставку и удаление элементов из любого места. forward_list реализован в виде односвязного списка, который хранит только ссылку на следующий элемент.

Добавление, удаление и перемещение элементов внутри списка или между несколькими списками не инвалидирует итераторы, которые в настоящее время ссылаются на другие элементы в списке. Однако итератор или ссылка, ссылающиеся на элемент, инвалидируются, когда соответствующий элемент удаляется (через erase_after) из списка.

В этом примере мы создаем forward_list с именем numbers, с помощью метода front() получаем первый элемент списка и выводим его на экран. Далее мы перебираем все элементы списка с помощью цикла for и выводим их на экран.

#код
Заходи и подписывайся на
«Дневник разработчика»

В блоге «Дневник разработчика» вы найдете множество полезных материалов, написанных профессиональным разработчиком с опытом работы в высоких нагрузках.

Стек и куча
Язык конфигурации TOML
Роадмап изучения языка Rust
Зачем изучать СИКП

Здесь собраны рабочие инженерные практики, интересные беседы об информатике, коде, а также советы по изучению языка Rust.

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

Подпишись: https://t.iss.one/rustskill
🔥3
Применение указателя unique_ptr

В функции foo1 мы выделяем память для указателя ptr и затем освобождаем ее с помощью оператора delete. Однако, если произойдет исключение во время работы функции, то память не будет освобождена, что приведет к утечке памяти.

Во втором примере мы используем std::unique_ptr, который выделяет память при инициализации и освобождает память при уничтожении объекта.
Таким образом, мы можем гарантировать, что ресурсы будут корректно освобождены, даже в случае исключения.

Данный тип указателей полезен, когда нужен указатель на объект, на который НЕ будет других указателей и который будет удален после удаления указателя.

#код
Статья дня. 👨‍🎓 ТОП-18 бесплатных учебных курсов по C/C++ для новичков и профессионалов

Представляем вашему вниманию лучшие бесплатные учебные курсы по C/C++ как для начинающих, так и для продвинутых разработчиков.

Читать статью

#читать
C++ 20 в деталях

Автор: Райнер Гримм
Дата выхода: 2023

#cpp #ru #2O23

Скачать книгу
Какой из перечисленных модификаторов является модификатором размера?
Anonymous Quiz
60%
long
6%
signed
7%
unsigned
26%
Ни один из перечисленных
👍1
🚀 Давно не прокачивал свои навыки в С++?

Записывайся на онлайн-урок «Условные переменные в С++» 11 июня в 20:00 мск!

Узнай все о std::condition_variable, избегай типовых ошибок, познакомься с spurious wakeup и напиши concurrency-примитивы!

➡️ Регистрируйтесь прямо сейчас, чтобы не пропустить бесплатный урок.
Каким будет результат вычисления цикла?
int m = 2, n = 5; while (m <= 3) { while (m <= n) { n = m; break; } break; m++; }
Anonymous Quiz
3%
m = 2; n = 10;
17%
m = 5; n = 2;
75%
m = 2; n = 2;
6%
m = 120; n = 30;
0%
m = 0; n = 2;
🚙Мониторинг движения транспорта в IoT служит для всестороннего мониторинга всех участников дорожного движения, включая отслеживание скорости, траекторий, выхода пешеходов на дорогу и всего, что может в конечном итоге повлиять на поток и безопасность дорожного движения.

👉Узнайте больше 3 июля в 20:00 ч мск на бесплатном вебинаре онлайн-курса «IoT Developer» - «Мониторинг транспорта в платформе ThingsBoard»: регистрация

На занятии рассмотрим решение мониторинга транспорта, познакомимся с реализацией демо проекта на платформе ThingsBoard:
1. Подключение устройств
2. Создание сущностей
3. Разработка цепочек правил
4. Разработка дашборда

🤝Понравится урок — продолжите обучение на курсе по спеццене и даже в рассрочку!

Реклама. ООО «Отус онлайн-образование», ОГРН 1177746618576