Code Ukraine // Програмування
17.6K subscribers
1K photos
346 videos
3 files
1.45K links
Корисні шпаргалки, лекції та матеріали для програмістів.


@itua_chat - наш чат
@ad_duck - зв’язок / @ukr_duck
Download Telegram
std::includes

Ця функція перевіряє, чи є один діапазон підмножиною іншого. Це може бути корисно для перевірки, чи містить один контейнер усі елементи іншого.

#cplusplus

Code Ukraine
std::cerr

std::cerr - це об'єкт класу std::ostream, який використовується для виведення повідомлень про помилки в програмі на стандартний пристрій виведення помилок (stderr).

std::cerr є членом стандартної бібліотеки мови C++ і визначений у заголовочному файлі iostream.

Для виведення повідомлення про помилку на std::cerr можна використовувати оператор << у такий спосіб:

std::cerr << "Помилка: " << повідомлення << std::endl;

#cplusplus

Code Ukraine
std::launder

Функція std::launder була додана в C++17 для розв'язання проблем, пов'язаних з аліасингом і суворим аліасингом.

Функція std::launder використовується для того, щоб перетворити покажчик одного типу в покажчик іншого типу, не порушуючи при цьому правила суворого аліасингу.

Що таке аліасинг?
Аліасинг - це ситуація, коли два або більше покажчиків посилаються на один і той самий об'єкт у пам'яті.

Що таке строгий аліасинг?
Суворий аліасинг - це правило компілятора, яке забороняє модифікувати об'єкт через покажчик одного типу, якщо він був отриманий через покажчик іншого типу.

#cplusplus

Code Ukraine
std::bitset

std::bitset - це шаблон класу, який являє собою послідовність бітів фіксованого розміру N. Бітовими множинами можна керувати стандартними логічними операторами і перетворювати їх у рядки та цілі числа.

У цьому прикладі ми створюємо бітову множину b розміром 8 біт і ініціалізуємо її значенням 42. Потім ми виводимо її на екран. Результат роботи цього коду: 00101010.

#cplusplus

Code Ukraine
Специфікатори доступу

У C++ використовуються три специфікатори доступу: public, private і protected. Вони визначають, хто може отримати доступ до членів класу або структури.

public - члени з таким специфікатором доступні з будь-якого місця програми, включно з іншими класами та структурами.
private - члени з таким специфікатором доступні тільки з самого класу, в якому вони оголошені.
protected - члени з таким специфікатором доступні з самого класу, в якому вони оголошені, а також з похідних класів.

За замовчуванням усі члени класу оголошуються зі специфікатором private, а члени структури - з public.

Специфікатори доступу використовуються для забезпечення інкапсуляції, тобто відокремлення внутрішньої реалізації класу від його інтерфейсу. Інкапсуляція дає змогу приховати деталі реалізації від користувача класу, що робить код зрозумілішим і надійнішим.

#cplusplus

Code Ukraine
std::byte

std::byte - це тип даних, введений у стандарт C++17. Він являє собою один байт, тобто 8 біт. std::byte не є ні типом символу, ні типом числа. Він призначений для представлення байтів у пам'яті, незалежно від того, чи використовуються вони для зберігання символів, чисел або чого-небудь ще.

std::byte може використовуватися в таких випадках:
- Для доступу до пам'яті, яку займають інші об'єкти.
- Для роботи з низькорівневими функціями, такими як читання і запис у порти введення-виведення.
- Для реалізації власних типів даних, які повинні зберігати байти.

#cplusplus

Code Ukraine
Бітові поля

Бітові поля (bit fields) дозволяють використовувати певну кількість бітів для зберігання даних у структурах або класах. Це може бути корисним, якщо вам потрібно економити пам'ять або якщо ви працюєте з даними, які являють собою бітові прапори.

#cplusplus

Code Ukraine
std::reference_wrapper

std::reference_wrapper - це клас у C++, що надається стандартною бібліотекою, який обертає посилання на об'єкт. Цей клас корисний, коли вам потрібно передати або зберігати посилання на об'єкт, але ви хочете уникнути неявного копіювання об'єкта.

Основне призначення std::reference_wrapper полягає в тому, щоб дозволити передавати посилання як аргументи функцій, які зазвичай очікують копії об'єктів. Це особливо корисно, наприклад, під час використання алгоритмів зі стандартної бібліотеки, які можуть копіювати елементи контейнера, якщо не явно не вказано інакше.

#cplusplus

Code Ukraine
Дізнаємося кількість цифр у рядку

Програма запитує в користувача рядок і за допомогою циклу for проходиться по кожному символу рядка. Якщо символ є цифрою (використовуючи функцію isdigit), збільшується лічильник (count). Наприкінці програми виводиться кількість цифр у рядку.

#cplusplus

Code Ukraine
Знаходимо зворотний масив у C++

Один із найшвидших варіантів зворотного масиву в C++ передбачає використання двох покажчиків для ітерації по масиву. Це забезпечує лінійну складність O(n) і приблизний час виконання алгоритму, що дорівнює O(n/2).

Тут ми створюємо дві змінні-покажчики, start і end, які починаються з першого й останнього елемента відповідно. Потім ми проходимо масивом у циклі while, міняючи місцями елементи і збільшуючи покажчик start і зменшуючи покажчик end на кожній ітерації.

#cplusplus

Code Ukraine
Отримати поточний час і дату в C++

Починаючи з C++11, стандартним рішенням для отримання поточного часу і дати в C++ є використання бібліотеки chrono.

Ми можемо отримати поточний час за допомогою std::chrono::system_clock::now() з <chrono.h> заголовка і перетворити його в std::time_t тип (час від епохи).

Потім перетворити std::time_t на місцевий календарний час std::ctime у Www Mmm dd hh:mm:ss yyyyy форматі, як показано на картинці.

#cplusplus

Code Ukraine
Посилання

Посилання - це альтернативні імена для наявних змінних. Змінна може бути оголошена як посилання, використовуючи символ &.
Посилання може бути визначено як тип змінної, який може діяти як посилання на іншу змінну.

Символ & використовується для позначення адреси змінної або будь-якої пам'яті. Змінні, пов'язані з посилальними змінними, можуть бути доступні як за іменем, так і за посилальною змінною, пов'язаною з ними.

#cplusplus

Code Ukraine
std::consume

std::consume - це функція, призначена для споживання значення з атомарної змінної. Вона гарантує, що всі зміни, зроблені в атомарній змінній до виклику std::consume, будуть видні в потоці, який її викликає.

#cplusplus

Code Ukraine
Функція std::count

Функція std::count використовується для підрахунку кількості елементів у діапазоні, які збігаються із заданим значенням. Вона працює з ітераторами, що дає змогу використовувати її з різними типами контейнерів, таких як масиви, вектори, списки тощо.

#cplusplus

Code Ukraine
Spdlog

Spdlog - це швидка, проста у використанні та зручна бібліотека журналювання для C++. Вона має безліч функцій, що роблять її ідеальним вибором для різних додатків.

Spdlog є однією з найшвидших бібліотек журналювання для C++. Також має простий і зрозумілий API. Spdlog пропонує безліч функцій, що роблять її зручною у використанні, як-от автоматичне форматування повідомлень, колірне кодування та багато іншого.

#cplusplus

Code Ukraine
Довжина числа

Для обчислення кількості цифр у числі замість циклу можна ефективно використовувати log.

#cplusplus

Code Ukraine
Застосування покажчика unique_ptr<T>

У функції foo1 ми виділяємо пам'ять для покажчика ptr і потім звільняємо її за допомогою оператора delete. Однак, якщо станеться виняток під час роботи функції, то пам'ять не буде звільнено, що призведе до витоку пам'яті.

У другому прикладі ми використовуємо std::unique_ptr, який виділяє пам'ять під час ініціалізації та звільняє пам'ять під час знищення об'єкта.
Таким чином, ми можемо гарантувати, що ресурси будуть коректно звільнені, навіть у разі виключення.

Цей тип покажчиків корисний, коли потрібен покажчик на об'єкт, на який НЕ буде інших покажчиків і який буде видалено після видалення покажчика.

#cplusplus

Code Ukraine
Алгоритм count_if

Алгоритм count_if виконує підрахунок кількості виконань умови в послідовності.

#cplusplus

Code Ukraine
Заповнюємо вектор послідовними значеннями

Із цим нам допоможе функція std::iota, яка є частиною бібліотеки <numeric>. Вона використовується для заповнення діапазону послідовними значеннями, починаючи з певного значення.

У цьому прикладі ми створюємо вектор із 10 елементів, заповнюємо його значеннями від 1 до 10 за допомогою std::iota і виводимо вектор.

#cplusplus

Code Ukraine
🖥 Масиви в C++: вставляємо та друкуємо елементи

Щойно починаєш вчити C++? Тоді ти точно зіткнешся з масивами.
Давай розберемося, як додавати значення та виводити їх на екран. 🚀

📌 Що таке масив у C++?
Це структура, яка зберігає фіксовану кількість елементів одного типу.
Розмір масиву задається один раз і не змінюється під час виконання.

Як вставляти значення в масив?
📥 Вставка — через cin >> arr[i]
📤 Вивід — через cout << arr[i]

Поради для новачків:

Індексація починається з 0
Масив має фіксований розмір, його не можна змінити на ходу
Для зручності краще зберігати розмір у змінній (int n = 5)
Якщо розмір не відомий заздалегідь — краще використовувати vector

Хочете дізнатися, як працюють динамічні масиви, або перейти до std::vector? Пишіть в коментарях! ✍️

#cplusplus #масиви #програмування #початківцям #forloop

Code Ukraine
Please open Telegram to view this post
VIEW IN TELEGRAM