Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
#include <iostream>
#include <map>
int main() {
std::map<int, std::string> m;
m[1] = "one"; // Вставка пары ключ-значение
m[2] = "two";
for (const auto& pair : m) {
std::cout << pair.first << ": " << pair.second << std::endl; // Вывод ключа и значения
}
}
map
автоматически сортирует элементы по ключам.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6❤1
тах.
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
👍8❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤1
#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
👍12❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6✍4🔥1
#include <type_traits>
template<typename T>
void check() {
// Проверка, является ли тип целочисленным
if (std::is_integral<T>::value) {
// Логика для целочисленных типов
}
}
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5❤1
#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
👍6❤1👀1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🔥2
Массив — это статический контейнер с фиксированным размером, который задаётся при создании. Размер массива не может изменяться в процессе выполнения программы.
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
👍8❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3✍2🔥1
пы
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
👍5❤1🤔1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥2
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
👍12❤3
Please open Telegram to view this post
VIEW IN TELEGRAM
👍6🔥2👀2
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
👍7❤1
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥3
scoped_lock
происходит захват всех переданных мьютексов, а при выходе из области видимости — их автоматическое освобождение.
std::mutex mtx1, mtx2;
{
std::scoped_lock lock(mtx1, mtx2); // Захватывает оба мьютекса
// Критическая секция
} // Мьютексы автоматически освобождаются
Использование
scoped_lock
особенно полезно в ситуациях, где требуется захватить несколько мьютексов одновременно, обеспечивая безопасность и удобство.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7❤1