TGViewer
Channel Public Channel
Senior C++ Developer

Senior C++ Developer

@seniorcpp

Изучаем C++.

По вопросам сотрудничества: @adv_and_pr

РКН: https://www.gosuslugi.ru/snet/676e9a1e4e740947beca35ba
Subscribers
11.6K
Photos
1.5K
Videos
3
Links
640

Showing posts older than #2428 · Back to latest

Older Posts 20 shown
Post #2427 3.04K
#вопросы_с_собеседований
Что такое perfect forwarding в C++, как оно работает и зачем оно нужно?

Ответ ⬇️
Perfect forwarding — это техника передачи аргументов в функции или конструкторы так, чтобы сохранить их исходные квалификаторы (например, lvalue, rvalue). Она достигается с помощью универсальных ссылок (T&&) и функции std::forward. Perfect forwarding используется для передачи аргументов в шаблонных функциях без лишних копирований.

Пример использования ⚙️
#include <iostream>
#include <utility>

void process(int& x) {
std::cout << "Lvalue: " << x << "\n";
}

void process(int&& x) {
std::cout << "Rvalue: " << x << "\n";
}

template <typename T>
void forwarder(T&& arg) {
process(std::forward<T>(arg));
}

int main() {
int a = 42;

forwarder(a); // Передаем lvalue
forwarder(100); // Передаем rvalue
return 0;
}
Post #2426 2.86K
⚙️ std::reverse

В C++ функция std::reverse из заголовка <algorithm> позволяет изменить порядок элементов в контейнере на обратный. Это полезно для работы с массивами, векторами и другими последовательностями.
Post #2424 2.75K
👩‍💻 Задача по C++: Удаление дубликатов из массива

Напишите функцию, которая принимает массив целых чисел и удаляет из него все дубликаты. Возвращаемый массив должен содержать только уникальные значения, сохраняя исходный порядок их появления.

Пример:

std::vector<int> numbers = {1, 2, 2, 3, 4, 3, 5};
std::vector<int> result = removeDuplicates(numbers);

for (int num : result) {
std::cout << num << " ";
}
// Ожидаемый вывод: 1 2 3 4 5


Решение задачи на картинке ☝
Post #2423 2.88K
⚙️ std::rotate

Функция std::rotate из заголовка циклически перемещает элементы в контейнере. Это удобно для сдвига массива или перестановки элементов.
Post #2422 3.01K
⚙️ std::set

Класс std::set из заголовка <set> представляет собой контейнер, хранящий уникальные элементы в отсортированном порядке. Это удобно для работы с множествами или быстрого поиска.
Post #2420 2.66K
⚙️ std::priority_queue

В C++ класс std::priority_queue из заголовка <queue> представляет собой контейнер с приоритетной очередью. Элементы извлекаются в порядке приоритета — по умолчанию, от большего к меньшему.
Post #2419 2.86K
⚙️ std::lower_bound и std::upper_bound

Функции std::lower_bound и std::upper_bound из заголовка <algorithm> используются для поиска границ диапазона элементов, равных заданному значению, в отсортированном контейнере. Это основа для эффективного бинарного поиска.
Post #2417 2.83K
⚙️ std::unique

Функция std::unique из заголовка <algorithm> удаляет последовательные дубликаты в отсортированном диапазоне, оставляя уникальные элементы. Это полезно для очистки списка от повторяющихся значений.
Post #2416 3.09K
👩‍💻 Задача по C++: Проверка строки на палиндром

Напишите функцию, которая принимает строку и проверяет, является ли она палиндромом. Функция должна игнорировать пробелы, знаки препинания и регистр.

Пример:

std::cout << isPalindrome("A man, a plan, a canal, Panama") << std::endl; // Ожидаемый результат: true
std::cout << isPalindrome("Hello, World!") << std::endl; // Ожидаемый результат: false


Решение задачи на картинке ☝
Post #2415 3K
⚙️ std::tie

Функция std::tie из заголовка <tuple> используется для создания кортежа ссылок, что позволяет удобно распаковывать значения из функций или объектов. Это упрощает многозначные возвраты и код чтения данных.
Post #2414 2.92K
⌛ Что будет выведено при выполнении кода?

Пояснение
⬇️
Лямбда-выражение с захватом по значению и спецификатором mutable работает с копией x. Изменение x внутри лямбды не влияет на оригинальную переменную x вне лямбды.
Post #2412 3.05K
➡️ Crow — легковесный фреймворк для веб-приложений на C++

Crow — это минималистичный фреймворк для разработки веб-серверов на C++. Поддерживает маршрутизацию, работу с JSON и асинхронный ввод-вывод, что делает его идеальным для создания быстрых и лёгких API.

• Простая маршрутизация для создания RESTful API.
• Встроенная поддержка JSON через nlohmann/json.
• Асинхронная обработка запросов для высокой производительности.

🔗 Ссылочка на доку
Post #2411 2.94K
Что такое std::move в C++ и как он используется?

Ответ ⬇️
std::move — это стандартная функция в C++, которая позволяет указать, что объект может быть "перемещён", т.е. его ресурсы могут быть переданы другому объекту, а не скопированы. Перемещение особенно полезно для объектов, которые управляют большими ресурсами, например, динамической памятью. В результате std::move позволяет избежать затратных операций копирования и повысить производительность, передавая ресурсы, а не создавая их дубликаты.

Пример использования ⚙️
#include <iostream>
#include <string>
#include <utility> // для std::move

void processData(std::string str) {
std::cout << "Processing: " << str << std::endl;
}

int main() {
std::string data = "Sample Data";

// Передаем строку через std::move, что позволяет избежать копирования
processData(std::move(data));

// data теперь не определена после std::move
std::cout << "Data после std::move: " << data << std::endl; // результат не гарантирован

return 0;
}

#вопросы_с_собеседований
Post #2410 2.95K
⚙️ std::forward

Функция std::forward из заголовка <utility> используется для реализации идеальной передачи (perfect forwarding) аргументов в шаблонных функциях. Она позволяет сохранить категорию значения (lvalue или rvalue) передаваемого аргумента, что особенно полезно при написании обобщённого кода.
Post #2409 2.89K
⌛ Что будет выведено при выполнении кода?

Пояснение
⬇️
Для func(10) вызывается специализированная версия функции для int. Для func(10.5) вызывается шаблонная версия, так как точного соответствия нет.
Post #2407 2.84K
➡️ RaftLib — современная библиотека для параллельной обработки данных в C++

RaftLib — это библиотека с открытым исходным кодом, упрощающая разработку высокопроизводительных параллельных приложений на C++. Она позволяет создавать масштабируемые системы обработки данных, используя концепцию потоков и конвейеров.

• Интуитивный интерфейс: Напоминает стандартные потоки C++, облегчая освоение.
• Автоматическая параллелизация: Управляет потоками и распределением задач для оптимальной производительности.
• Гибкость и масштабируемость: Эффективна как на локальных системах, так и в распределённых средах.

🔗 Ссылочка на доку
Post #2406 3.01K
⚙️ std::visit

В C++17 введена функция std::visit из заголовка <variant>, которая позволяет применять вызываемый объект (функтор, лямбда или функциональный объект) к текущему значению std::variant. Это обеспечивает безопасную и удобную работу с вариантами, заменяя необходимость в явных проверках типа и приведениях.
Post #2405 3.33K
⚙️ std::transform_reduce

Функция std::transform_reduce из заголовка <numeric> объединяет возможности std::transform и std::accumulate, позволяя сначала применить операцию к каждому элементу, а затем свести их к одному значению. Это полезно для производительного параллельного вычисления сумм, произведений и других операций.
Post #2404 3.84K
👩‍💻 Задача по C++

Напишите функцию findMedian для нахождения медианы в отсортированном массиве целых чисел. Функция должна корректно работать как с массивами чётной длины, так и с нечётной, и возвращать медиану в виде числа с плавающей точкой.

Пример:


std::vector<int> arr1 = {1, 3, 3, 6, 7, 8, 9};
std::vector<int> arr2 = {1, 2, 3, 4, 5, 6, 8, 9};

std::cout << findMedian(arr1) << std::endl; // Вернёт 6
std::cout << findMedian(arr2) << std::endl; // Вернёт 4.5


Решение задачи на картинке ☝
Post #2403 3.56K
👩‍💻 Задача по C++: Подсчёт гласных и согласных в строке

Напишите функцию на C++, которая принимает строку и подсчитывает количество гласных и согласных букв. Функция должна игнорировать пробелы, цифры и другие символы, не являющиеся буквами. В основной функции main() вызовите эту функцию и выведите результат в консоль.

Пример:


"Hello, World!"

Гласные: 3
Согласные: 7


Решение задачи на картинке ☝
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →