Please open Telegram to view this post
VIEW IN TELEGRAM
тах.
delete освобождает память, выделенную для одного объекта:int* ptr = new int(5);
delete ptr; // Освобождает память для одного int
delete[] освобождает память, выделенную для массива объектов:
int* arr = new int[5];
delete[] arr; // Освобождает память для массива int
[]
для одиночного объекта может вызвать ошибки.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#include <iostream>
union Data {
int intValue;
float floatValue;
char charValue;
};
int main() {
Data data;
data.intValue = 10; // Устанавливаем значение int
std::cout << "Int: " << data.intValue << std::endl;
data.floatValue = 3.14f; // Перезаписываем значение float
std::cout << "Float: " << data.floatValue << std::endl;
return 0;
}
Union полезен для экономии памяти, но требует осторожности, так как изменение одного члена может затронуть другие.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#include <type_traits>
template<typename T>
void check() {
// Проверка, является ли тип целочисленным
if (std::is_integral<T>::value) {
// Логика для целочисленных типов
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#include <iostream>
inline int add(int a, int b) {
// Простая inline функция для сложения двух чисел
return a + b;
}
int main() {
int result = add(3, 4);
std::cout << "Result: " << result << std::endl;
}
Inline функции полезны для небольших, часто вызываемых функций.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Массив — это статический контейнер с фиксированным размером, который задаётся при создании. Размер массива не может изменяться в процессе выполнения программы.
int arr[5] = {1, 2, 3, 4, 5}; // Статический массив из 5 элементов
Вектор — это динамический массив, который может изменять свой размер в процессе выполнения. Вектор автоматически управляет памятью, увеличивая или уменьшая её при добавлении или удалении элементов.
#include <vector>
std::vector<int> vec; // Инициализация вектора
vec.push_back(1); // Добавление элемента
vec.push_back(2); // Вектор автоматически увеличивает размер
Векторы предлагают больше функционала, таких как автоматическое управление памятью и встроенные методы для работы с элементами, в то время как массивы обеспечивают более низкий уровень доступа к памяти и подходят для случаев, когда размер известен заранее.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
пы
int и fl
oat используются для хранения числовых данных, но имеют ключевые различия.- int: Целочисленный тип, который хранит целые числа без дробной части. Занимает фиксированный объем памяти (обычно 4 байта) и имеет ограниченный диапазон значений (например, от -2³¹ до 2³¹-1).
- float: Тип с плавающей точкой, который хранит числа с дробной частью. Использует 4 байта памяти и представляет числа в формате IEEE 754. Позволяет работать с дробными значениями, но имеет ограниченную точность из-за особенностей представления.
int a = 5; // Целое число
float b = 5.5f; // Число с плавающей точкой
Основное различие:
int
подходит для точных целочисленных операций, а float
— для вычислений с дробными числами, но с возможной потерей точности.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
std::thread::hardware_concurrency — это статическая функция, которая возвращает количество потоков, которые могут быть выполнены одновременно на текущем оборудовании. Это значение обычно соответствует количеству логических процессоров (ядер) в системе.
Функция полезна для оптимизации многопоточных программ, так как позволяет определить оптимальное количество потоков для выполнения задач. Если функция не может определить количество ядер, она возвращает 0.
Использование
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С++ собеседования
Функция полезна для оптимизации многопоточных программ, так как позволяет определить оптимальное количество потоков для выполнения задач. Если функция не может определить количество ядер, она возвращает 0.
#include <iostream>
#include <thread>
int main() {
unsigned int numThreads = std::thread::hardware_concurrency();
std::cout << "Number of concurrent threads supported: " << numThreads << std::endl;
return 0;
}
Использование
hardware_concurrency
помогает избежать создания избыточного количества потоков, что может привести к снижению производительности из-за накладных расходов на переключение контекста.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
std::array
— это контейнер из стандартной библиотеки, представляющий статический массив фиксированного размера. В отличие от обычных массивов, std::array
предоставляет дополнительные методы, такие как size()
, begin()
, end()
, и поддерживает итераторы, что делает его более удобным и безопасным в использовании.Пример:
#include <array>
#include <iostream>
int main() {
std::array<int, 3> arr = {1, 2, 3}; // Создание массива из 3 элементов
std::cout << "Size: " << arr.size() << std::endl; // Размер массива
}
std::array
хранит данные на стеке, что обеспечивает высокую производительность, и гарантирует отсутствие утечек памяти.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
scoped_lock
происходит захват всех переданных мьютексов, а при выходе из области видимости — их автоматическое освобождение.
std::mutex mtx1, mtx2;
{
std::scoped_lock lock(mtx1, mtx2); // Захватывает оба мьютекса
// Критическая секция
} // Мьютексы автоматически освобождаются
Использование
scoped_lock
особенно полезно в ситуациях, где требуется захватить несколько мьютексов одновременно, обеспечивая безопасность и удобство.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
int x = 10;
decltype(x) y = 20; // Тип y будет int, так как тип x — int
decltype
также учитывает категорию значения (lvalue, rvalue), что делает его полезным для точного определения типов в сложных сценариях. Например, при работе с возвращаемыми значениями функций или выражениями.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
1. Единообразие интерфейса: Использование стандартных HTTP-методов (GET, POST, PUT, DELETE) для выполнения операций.
2. Отсутствие состояния: Каждый запрос содержит всю информацию, необходимую для его обработки.
3. Кэширование: Ответы могут быть кэшируемыми для повышения производительности.
4. Клиент-серверная архитектура: Четкое разделение между клиентом и сервером.
5. Слоистая система: Возможность использования промежуточных слоев (прокси, шлюзы) без изменения интерфейса.
// Пример HTTP-запроса GET для получения данных
GET /api/resource/123 HTTP/1.1
Host: example.com
RESTful API широко используется благодаря своей простоте, масштабируемости и удобству интеграции.
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM