
Получите клиентов в любой нише!
Делегируйте запуск рекламы нам — бесплатно
Подробнее
Купить рекламу в этом канале
Формат:
keyboard_arrow_down
- 1/24
- 2/48
- 3/72
- Нативный
- 7 дней
- Репост
1 час в топе / 24 часа в ленте
Количество:
keyboard_arrow_down
- 1
- 2
- 3
- 4
- 5
- 8
- 10
- 15
Стоимость публикации:
local_activity
2 727.27₽2 727.27₽local_mall
0.0%
Осталось по этой цене:0
Последние посты канала
Какие есть особенности статических полей класса в языке С++?
Статические поля класса в C++ имеют несколько особенностей:
1. Общий доступ: статические поля являются общими для всех объектов этого класса. Это означает, что изменение значения статического поля в одном объекте, изменяет его для всех объектов этого класса.
2. Инициализация: статические поля инициализируются только один раз, когда программа запускается. Значения статических полей сохраняются на протяжении всего времени работы программы.
3. Доступ: доступ к статическим полям класса возможен без создания объекта этого класса, например, используя имя класса и оператор :: .
4. Память: статические поля класса хранятся не в куче или стеке, а в статической области памяти, что позволяет им занимать память только один раз, независимо от количества созданных объектов класса.
➡️ @cpp_geek
Статические поля класса в C++ имеют несколько особенностей:
1. Общий доступ: статические поля являются общими для всех объектов этого класса. Это означает, что изменение значения статического поля в одном объекте, изменяет его для всех объектов этого класса.
2. Инициализация: статические поля инициализируются только один раз, когда программа запускается. Значения статических полей сохраняются на протяжении всего времени работы программы.
3. Доступ: доступ к статическим полям класса возможен без создания объекта этого класса, например, используя имя класса и оператор :: .
4. Память: статические поля класса хранятся не в куче или стеке, а в статической области памяти, что позволяет им занимать память только один раз, независимо от количества созданных объектов класса.
➡️ @cpp_geek
1200
12:05
25.02.2025
📌 Оптимизация кода с
Привет, друзья! Сегодня поговорим про
💡 Зачем нужен
Обычно, если функция не может вернуть корректное значение, приходится использовать:
✔ Возвращаемое значение с ошибочным кодом (неудобно, особенно если 0 или
✔ Выброс исключения (дорого по ресурсам).
✔ Указатели (
🔥 Альтернатива? Используем
✅ Код стал чище: нет лишних проверок
🎯 Когда использовать?
🔹 Когда функция может вернуть "ничего", но исключения и специальные значения не подходят.
🔹 Для более понятного API (например, парсинг строки в число).
🔹 Когда важно избежать неопределенного состояния (например, с переменной внутри класса).
А ты уже используешь
➡️ @cpp_geek
std::optional
в C++ Привет, друзья! Сегодня поговорим про
std::optional
— мощный инструмент, который делает код чище и безопаснее. 💡 Зачем нужен
std::optional
? Обычно, если функция не может вернуть корректное значение, приходится использовать:
✔ Возвращаемое значение с ошибочным кодом (неудобно, особенно если 0 или
-1
могут быть валидными). ✔ Выброс исключения (дорого по ресурсам).
✔ Указатели (
nullptr
, но требует дополнительных проверок). 🔥 Альтернатива? Используем
std::optional
!
#include <iostream>
#include <optional>
#include <string>
std::optional<std::string> findUser(int id) {
if (id == 42) return "John Doe";
return std::nullopt;
}
int main() {
auto user = findUser(42);
if (user) {
std::cout << "User found: " << *user << std::endl;
} else {
std::cout << "User not found!" << std::endl;
}
}
✅ Код стал чище: нет лишних проверок
nullptr
, исключений или специальных значений. 🎯 Когда использовать?
🔹 Когда функция может вернуть "ничего", но исключения и специальные значения не подходят.
🔹 Для более понятного API (например, парсинг строки в число).
🔹 Когда важно избежать неопределенного состояния (например, с переменной внутри класса).
А ты уже используешь
std::optional
в своем коде? Делись опытом в комментариях! ⬇🔍➡️ @cpp_geek
1700
07:01
17.02.2025
imageИзображение не доступно для предпросмотра
Бинарный поиск
Чаще всего бинарный поиск (бинпоиск) используют, чтобы найти элемент в отсортированном массиве. Мы начинаем искать с середины массива. Если находим то, что нужно, или если больше нечего рассматривать, мы останавливаемся.
В противном случае мы решаем, в каком направлении — вправо или влево от середины — мы должны продолжить поиск. Так как пространство поиска после каждой проверки делится на два, то время выполнения алгоритма — O(log n).
Код выводит следующее:
бинарный поиск: нашли по индексу 4
Если искомый элемент не найден, но мы хотим найти ближайший элемент меньше или больше запроса, то можно использовать функции STL
➡️ @cpp_geek
Чаще всего бинарный поиск (бинпоиск) используют, чтобы найти элемент в отсортированном массиве. Мы начинаем искать с середины массива. Если находим то, что нужно, или если больше нечего рассматривать, мы останавливаемся.
В противном случае мы решаем, в каком направлении — вправо или влево от середины — мы должны продолжить поиск. Так как пространство поиска после каждой проверки делится на два, то время выполнения алгоритма — O(log n).
Код выводит следующее:
бинарный поиск: нашли по индексу 4
Если искомый элемент не найден, но мы хотим найти ближайший элемент меньше или больше запроса, то можно использовать функции STL
lower_bound()
и upper_bound()
.➡️ @cpp_geek
1700
18:14
16.02.2025
imageИзображение не доступно для предпросмотра
Напишите базовую реализацию std::shared_ptr
➡️ @cpp_geek
std::shared_ptr
— умный указатель, который позволяет разделять владение объектом между несколькими shared_ptr. Когда последний shared_ptr уничтожается, он автоматически удаляет объект.➡️ @cpp_geek
2000
18:27
11.02.2025
imageИзображение не доступно для предпросмотра
SIMD (Single Instruction Multiple Data)
Это технология, позволяющая одновременно выполнять одну и ту же операцию над несколькими наборами данных. В современных процессорах SIMD-инструкции реализованы для ускорения работы с векторными операциями. В C++ SIMD-инструкции доступны через библиотеку immintrin.h.
В данном примере функция addVectors принимает на вход указатели на три массива a, b и c, каждый из которых содержит 8 элементов типа float. С помощью функции _mm256_loadu_ps происходит загрузка первого и второго векторов в регистры, затем с помощью функции _mm256_add_ps происходит их покомпонентное сложение. Результат сохраняется в третий вектор с помощью функции _mm256_storeu_ps.
➡️ @cpp_geek
Это технология, позволяющая одновременно выполнять одну и ту же операцию над несколькими наборами данных. В современных процессорах SIMD-инструкции реализованы для ускорения работы с векторными операциями. В C++ SIMD-инструкции доступны через библиотеку immintrin.h.
В данном примере функция addVectors принимает на вход указатели на три массива a, b и c, каждый из которых содержит 8 элементов типа float. С помощью функции _mm256_loadu_ps происходит загрузка первого и второго векторов в регистры, затем с помощью функции _mm256_add_ps происходит их покомпонентное сложение. Результат сохраняется в третий вектор с помощью функции _mm256_storeu_ps.
➡️ @cpp_geek
2400
14:56
01.02.2025
imageИзображение не доступно для предпросмотра
Использование выражений сгиба
С C++17 мы можем использовать складывать выражения для объединения последовательности
➡️ @cpp_geek
С C++17 мы можем использовать складывать выражения для объединения последовательности
std::arrays
, это элегантное и эффективное решение продемонстрировано выше.➡️ @cpp_geek
2600
19:30
24.01.2025
imageИзображение не доступно для предпросмотра
std::variant
Это фича C++17, обеспечивающая типобезопасное объединение, позволяющее хранить и манипулировать значениями разных типов в одном объекте. Она является частью стандартной библиотеки C++ и определена в заголовке .
Шаблонный класс
Основными функциями
В этом примере мы создаем объект
Однако, если мы попытаемся получить значение, используя неправильный тип (например,
➡️ @cpp_geek
Это фича C++17, обеспечивающая типобезопасное объединение, позволяющее хранить и манипулировать значениями разных типов в одном объекте. Она является частью стандартной библиотеки C++ и определена в заголовке .
Шаблонный класс
std::variant
похож на упрощенную версию union, но с дополнительной безопасностью типов и поддержкой различных операций.Основными функциями
std::variant
являются index()
, valueless_by_exception()
, operator=, emplace
.В этом примере мы создаем объект
var
, который может содержать значения типов int
, float
или std::string
. Мы присваиваем var
различные значения и получаем их с помощью std::get
.Однако, если мы попытаемся получить значение, используя неправильный тип (например,
std::get(var)
, когда вариант содержит std::string
, это вызовет исключение std::bad_variant_access
.➡️ @cpp_geek
2800
14:51
18.01.2025
imageИзображение не доступно для предпросмотра
Что такое std::sample?
Описание его функциональности:
1. Выбирает n уникальных элементов случайным образом из входного диапазона
2. Копирует выбранные элементы в выходной диапазон
3. Сохраняет относительный порядок выбранных элементов
Синтаксис:
- input_begin и input_end — итераторы входного диапазона
- output_begin — итератор выходного диапазона
- n — количество элементов для выборки
- generator — генератор случайных чисел
➡️ @cpp_geek
std::sample
— алгоритм который позволяет брать случайный элемент из диапазона. Был введён в C++ 17. Описание его функциональности:
1. Выбирает n уникальных элементов случайным образом из входного диапазона
2. Копирует выбранные элементы в выходной диапазон
3. Сохраняет относительный порядок выбранных элементов
Синтаксис:
std::sample(input_begin, input_end, output_begin, n, generator);
- input_begin и input_end — итераторы входного диапазона
- output_begin — итератор выходного диапазона
- n — количество элементов для выборки
- generator — генератор случайных чисел
➡️ @cpp_geek
2500
20:40
12.01.2025
imageИзображение не доступно для предпросмотра
std::sort
std::sort — это функция стандартной библиотеки для сортировки элементов в контейнерах, таких как вектор или список.
Чтобы использовать std::sort, нужно подключить заголовочный файл .
Метод принимает в качестве аргументов итераторы на начало и конец сортируемой последовательности и сортирует элементы в возрастающем порядке по умолчанию.
Для определения порядка сортировки можно указать свой компаратор.
➡️ @cpp_geek
std::sort — это функция стандартной библиотеки для сортировки элементов в контейнерах, таких как вектор или список.
Чтобы использовать std::sort, нужно подключить заголовочный файл .
Метод принимает в качестве аргументов итераторы на начало и конец сортируемой последовательности и сортирует элементы в возрастающем порядке по умолчанию.
Для определения порядка сортировки можно указать свой компаратор.
➡️ @cpp_geek
2800
08:06
26.12.2024
imageИзображение не доступно для предпросмотра
Что такое rvalue, lvalue?
lvalue — это всё, что имеет имя, rvalue — это то, что имени не имеет. Исторически сложились такие названия, потому что lvalue всегда было то, что писалось с левой стороны присваивающего выражения, а rvalue — это то, что появлялось только справа от этого выражения.
➡️ @cpp_geek
lvalue — это всё, что имеет имя, rvalue — это то, что имени не имеет. Исторически сложились такие названия, потому что lvalue всегда было то, что писалось с левой стороны присваивающего выражения, а rvalue — это то, что появлялось только справа от этого выражения.
➡️ @cpp_geek
3500
20:16
27.11.2024
close
Отзывы канала
Отзывов нет
Новинки в тематике
Лучшие в тематике
Выбрано
0
каналов на сумму:0.00₽
Подписчики:
0
Просмотры:
lock_outline
Перейти в корзинуКупить за:0.00₽
Комментарий