C++ Эволюция
2.72K subscribers
296 photos
2 videos
106 links
Обучающий канал по C++
Download Telegram
Что будет выведено при выполнении кода?

C++ Learning
👩‍💻
➡️ Использование std::midpoint для безопасного вычисления среднего значения

std::midpoint — это функция, появившаяся в C++20, которая позволяет безопасно вычислять среднее значение между двумя числами, избегая проблем с переполнением. Особенно полезна при работе с большими диапазонами значений.

• std::midpoint делает вычисление среднего значения более надёжным и безопасным.

🔗 Ссылочка на доку

C++ Learning 👩‍💻
🔥Тесты для подготовки к собеседованию🔥
Выбери своё направление:

1. Frontend
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. C/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
➡️ Использование std::as_const для безопасного получения константной ссылки

std::as_const — это функция, добавленная в C++17, которая возвращает константную ссылку на переданный объект. Это полезно, когда вы хотите вызвать только константные методы объекта или передать его в функции, не изменяя состояние объекта.

• std::as_const помогает явно указать, что объект не должен быть изменён, улучшая безопасность и читаемость кода.

🔗 Ссылочка на доку

C++ Learning 👩‍💻
➡️ Использование std::bit_cast для безопасного преобразования типов

std::bit_cast — это функция, введенная в C++20, которая позволяет безопасно преобразовывать один тип данных в другой, копируя биты напрямую. Эта функция полезна, когда нужно выполнить побитовую интерпретацию объекта как другого типа, например, для преобразования float в int.

• std::bit_cast безопаснее, чем reinterpret_cast, так как выполняет статическую проверку на соответствие типов. Она также может использоваться для сериализации данных или работы с битовыми представлениями различных структур.

C++ Learning 👩‍💻
Разбираем как решать задачи на LeetCode

Примеры решений
Пояснения

Выбери своё направление:

1. Python
2. JavaScript
3. Java
4. C#
5. Golang
6. C/C++
7. PHP
8. Kotlin
9. Swift
➡️ Использование библиотеки nameof для получения имени переменной или типа в виде строки

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

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

🔗 Ссылочка на доку

C++ Learning 👩‍💻
➡️ Использование библиотеки Date для удобной работы с датами и временем

Библиотека Date — это мощная и гибкая библиотека, которая предоставляет расширенные возможности для работы с датами и временем в C++.

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

Date отлично подходит для сложных задач, связанных с временными интервалами, разбором строковых представлений дат, и обработкой временных зон.

🔗 Ссылочка на доку

C++ Learning 👩‍💻
➡️ Использование std::popcount для подсчета количества установленных битов

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

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

C++ Learning 👩‍💻
💸 Вакансии для IT'шников
Выбери своё направление

1. Frontend
2. Python
3. Java
4. Тестировщик QA
5. Data Science
6. DevOps
7. C#
8. C/C++
9. Golang
10. PHP
11. Kotlin
12. Swift
Что будет выведено при выполнении кода?

C++ Learning
👩‍💻
➡️ Использование библиотеки immer для работы с неизменяемыми структурами данных в C++

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

immer делает работу с данными безопаснее и эффективнее, особенно в многопоточной среде.

🔗 Ссылочка на доку

C++ Learning 👩‍💻
➡️ Использование библиотеки Magnum для создания кроссплатформенных графических приложений

Magnum — это современная библиотека C++ для разработки графических приложений. Она предоставляет мощный API для работы с OpenGL, OpenAL и другими мультимедийными ресурсами, позволяя создавать кроссплатформенные приложения, игры и интерактивные 3D-сцены.

Magnum идеально подходит для разработчиков, создающих графические движки или приложения с 3D-визуализацией.

🔗 Ссылочка на доку

C++ Learning 👩‍💻
➡️ Использование std::lcm и std::gcd для работы с наименьшим общим кратным и наибольшим общим делителем

std::lcm и std::gcd — это функции, добавленные в C++17, которые позволяют легко вычислить наименьшее общее кратное (НОК) и наибольший общий делитель (НОД) двух чисел. Они полезны при решении задач, связанных с арифметикой и оптимизацией.

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

C++ Learning 👩‍💻
➡️ Использование std::ranges::views::filter и std::ranges::views::transform для обработки контейнеров

std::ranges::views::filter и std::ranges::views::transform — это инструменты, добавленные в C++20, позволяющие выполнять ленивую обработку контейнеров. Они позволяют фильтровать и изменять элементы контейнеров, не создавая новых копий.

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

C++ Learning 👩‍💻
➡️ Использование std::unreachable для обозначения недостижимого кода

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

• std::unreachable полезен в ситуациях, когда вы уверены, что до определенного участка кода выполнение никогда не дойдет.

C++ Learning 👩‍💻
Вопрос на собеседовании

Что такое "RAII" (Resource Acquisition Is Initialization) и как это помогает в управлении ресурсами в C++?

Ответ ⬇️
"RAII" — это идиома, при которой инициализация объекта захватывает ресурс, а освобождение ресурса происходит автоматически при уничтожении объекта. Это гарантирует корректное освобождение ресурсов, таких как память или файловые дескрипторы, даже при исключениях.

🗣 Пример:
#include <iostream>

class File {
public:
File(const char* filename) {
file_ = fopen(filename, "w");
if (file_) {
std::cout << "Файл открыт.\n";
}
}

~File() {
if (file_) {
fclose(file_);
std::cout << "Файл закрыт.\n";
}
}

private:
FILE* file_;
};

int main() {
{
File file("example.txt");
// Работа с файлом
} // Файл автоматически закроется при выходе из блока

// Результат выполнения:
// Файл открыт.
// Файл закрыт.
}


C++ Learning 👩‍💻
➡️ Использование библиотеки Dragonbox для быстрого и точного преобразования чисел с плавающей точкой в строку

Dragonbox — это современная библиотека C++, которая обеспечивает чрезвычайно быстрое и точное преобразование чисел с плавающей точкой (float и double) в строковое представление. Она гарантирует корректность округления, что делает её отличным выбором для высокопроизводительных приложений.

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

🔗 Ссылочка на доку

C++ Learning 👩‍💻
➡️ Использование std::expected для обработки ошибок без исключений

std::expected — это новый шаблонный класс, добавленный в C++23, который предоставляет способ возвращать либо ожидаемое значение, либо информацию об ошибке. Он позволяет более эффективно обрабатывать ошибки без использования исключений, делая код более чистым и понятным.

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

C++ Learning 👩‍💻
➡️ Использование библиотеки NanoRange для работы с диапазонами в стиле C++20

NanoRange приносит функциональность диапазонов (Ranges) из C++20 в более ранние версии стандарта C++.

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

NanoRange идеально подходит для проектов, работающих на стандартах C++11, C++14 или C++17, но желающих использовать преимущества std::ranges.

🔗 Ссылочка на доку

C++ Learning 👩‍💻