Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
В C++
😎 std::list — это двусвязный список. Он позволяет эффективно вставлять и удалять элементы в любом месте, но не поддерживает произвольный доступ к элементам. Это делает его идеальным для сценариев, где часто требуется вставка или удаление.
😎 std::deque — это двусторонняя очередь. Она поддерживает произвольный доступ, а также быструю вставку и удаление элементов с обоих концов. Это делает
Ставь👍 , если было полезно!
Больше ответов на сайте👈
✈️ С++ собеседования
list
и deque
— это контейнеры из STL, но они имеют разные характеристики и применения.deque
более универсальным, чем list
, но с немного большей сложностью для операций вставки и удаления в середине.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
set
и multiset
— это контейнеры из библиотеки стандартных шаблонов (STL), которые хранят элементы в отсортированном порядке. #include <set>
#include <iostream>
int main() {
std::set<int> s = {1, 2, 3};
s.insert(2); // Дубликат не добавится
for (int x : s) {
std::cout << x << " "; // Вывод: 1 2 3
}
}
#include <set>
#include <iostream>
int main() {
std::multiset<int> ms = {1, 2, 3};
ms.insert(2); // Дубликат добавится
for (int x : ms) {
std::cout << x << " "; // Вывод: 1 2 2 3
}
}
Основное отличие в том, что
set
не допускает дубликатов, а multiset
— допускает.Ставь
Больше ответов на сайте
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
#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
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