C++ Эволюция
2.72K subscribers
296 photos
2 videos
106 links
Обучающий канал по C++
Download Telegram
⚙️ std::generate_n

В C++ функция std::generate_n из заголовка <algorithm> используется для заполнения заданного количества элементов последовательности, используя функцию-генератор. Это удобно для инициализации контейнеров или создания данных на лету.

C++ Learning 👩‍💻
⚙️ std::find

В C++ функция std::find из заголовка <algorithm> используется для поиска первого вхождения заданного значения в диапазоне. Это полезно для работы с последовательными контейнерами, такими как массивы или векторы.

C++ Learning 👩‍💻
⚙️ std::any_of

В C++ функция std::any_of из заголовка <algorithm> проверяет, удовлетворяет ли хотя бы один элемент контейнера заданному условию. Это удобно для быстрого поиска в массиве или векторе.

C++ Learning 👩‍💻
⚙️ std::next_permutation

В C++ функция std::next_permutation из заголовка <algorithm> генерирует следующую лексикографическую перестановку элементов контейнера. Это полезно для решения задач комбинаторики и генерации всех возможных перестановок.

C++ Learning 👩‍💻
⚙️ std::any

В C++17 и выше std::any из заголовка <any> позволяет хранить значения любого типа. Это удобно, когда тип данных неизвестен во время компиляции или может меняться.

C++ Learning 👩‍💻
Что будет выведено при выполнении кода?

Пояснение ⬇️

Оператор == сравнивает значения value объектов. В данном случае 10 != 20, поэтому результат false. Затем оператор < возвращает true, так как 10 < 20. Поэтому вывод будет Less. Код компилируется и работает корректно.


C++ Learning 👩‍💻
⚙️ std::clamp

В C++17 и выше функция std::clamp из заголовка <algorithm> ограничивает значение заданным диапазоном. Это удобно для нормализации данных или защиты от выхода за пределы диапазона.

C++ Learning 👩‍💻
⚙️ std::thread

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

C++ Learning 👩‍💻
⚙️ std::swap()

Функция std::swap() из библиотеки <algorithm> используется для обмена значениями между двумя переменными. Это простая и эффективная операция, которая может быть полезна в различных алгоритмах и задачах.

C++ Learning 👩‍💻
✅️ GitHub теперь в Telegram!

Подписывайтесь:
Вопрос на собеседовании

Что такое умные указатели в C++ (std::unique_ptr, std::shared_ptr, std::weak_ptr), и чем они отличаются друг от друга?

Ответ ⬇️
Умные указатели в C++ автоматизируют управление памятью и помогают избежать утечек памяти. Они находятся в заголовке <memory>.

std::unique_ptr владеет ресурсом единолично. При уничтожении указателя ресурс освобождается.
std::shared_ptr позволяет нескольким указателям совместно владеть ресурсом. Ресурс освобождается, когда последний shared_ptr уничтожается.
std::weak_ptr предоставляет доступ к ресурсу, но не увеличивает счётчик ссылок. Используется для предотвращения циклических зависимостей.


Пример использования ⚙️
#include <iostream>
#include <memory>

int main() {
// unique_ptr: единоличное владение
std::unique_ptr<int> uptr = std::make_unique<int>(10);
std::cout << "unique_ptr: " << *uptr << "\n";

// shared_ptr: совместное владение
std::shared_ptr<int> sptr1 = std::make_shared<int>(20);
std::shared_ptr<int> sptr2 = sptr1; // sptr2 теперь также владеет ресурсом
std::cout << "shared_ptr: " << *sptr1 << ", use_count: " << sptr1.use_count() << "\n";

// weak_ptr: не увеличивает счётчик ссылок
std::weak_ptr<int> wptr = sptr1;
if (auto locked = wptr.lock()) {
std::cout << "weak_ptr: " << *locked << "\n";
}

return 0;
}


C++ Learning 👩‍💻
⚙️ std::ranges::for_each

В C++20 функция std::ranges::for_each из заголовка <algorithm> позволяет применять заданную функцию к элементам диапазона с учётом новой концепции Range-based. Это упрощает работу с контейнерами и итераторами.

C++ Learning 👩‍💻
⚙️ std::chrono

В C++ библиотека <chrono> предоставляет инструменты для измерения времени выполнения кода с высокой точностью. Это полезно для профилирования производительности и оптимизации.

C++ Learning 👩‍💻
🤔 Как это работает? — C++: Умные указатели std::shared_ptr

В C++ умные указатели помогают управлять памятью автоматически. Давайте разберёмся, как работает std::shared_ptr.

➡️ Как это работает:

• std::shared_ptr<MyClass> ptr1 создаёт умный указатель ptr1, который владеет объектом MyClass.
• ptr2 = ptr1 делает ptr2 ещё одним владельцем того же объекта.
• ptr1.use_count() возвращает количество умных указателей, владеющих объектом.

Когда последний std::shared_ptr перестанет существовать, объект будет автоматически удалён.

C++ Learning 👩‍💻
The owner of this channel has been inactive for the last 18 months. If they remain inactive for the next 8 days, they may lose their account and admin rights in this channel. The contents of the channel will remain accessible for all users.