В C++ функция
std::reverse
из заголовка <algorithm>
позволяет изменить порядок элементов в контейнере на обратный. Это полезно для работы с массивами, векторами и другими последовательностями.Please open Telegram to view this post
VIEW IN TELEGRAM
#вопросы_с_собеседований
Что такое perfect forwarding в C++, как оно работает и зачем оно нужно?
Ответ⬇️
Perfect forwarding — это техника передачи аргументов в функции или конструкторы так, чтобы сохранить их исходные квалификаторы (например, lvalue, rvalue). Она достигается с помощью универсальных ссылок (T&&) и функции std::forward. Perfect forwarding используется для передачи аргументов в шаблонных функциях без лишних копирований.
Пример использования⚙️
Что такое perfect forwarding в C++, как оно работает и зачем оно нужно?
Ответ
Пример использования
#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;
}
Please open Telegram to view this post
VIEW IN TELEGRAM
В C++ функция
std::replace
из заголовка <algorithm>
заменяет все вхождения указанного значения на новое значение в заданном диапазоне. Это полезно для массовой замены элементов в контейнерах.Please open Telegram to view this post
VIEW IN TELEGRAM
В C++ функции
std::ceil
и std::floor
из заголовка <cmath>
используются для округления числа вверх или вниз до ближайшего целого. Это полезно для контроля направления округления.Please open Telegram to view this post
VIEW IN TELEGRAM
Не многие знаю что существует тип переменной byte. Число этого типа может быть в диапазоне от 0 до 255.
🗣️ А, и занимает это чудо в 2 раза меньше памяти. За такое вас по головке поглядят.
Please open Telegram to view this post
VIEW IN TELEGRAM
Это позволяет значительно упростить код, сделать его более читаемым и легким для поддержки.
•
Например:typedef std::vector<std::string> StrVector;
Please open Telegram to view this post
VIEW IN TELEGRAM
В C++ метод
std::vector::resize
изменяет размер вектора. Если новый размер больше текущего, добавляются элементы с дефолтным значением. Если меньше — лишние элементы удаляются.Please open Telegram to view this post
VIEW IN TELEGRAM
В C++ функция
std::set_intersection
из заголовка <algorithm>
позволяет найти пересечение двух отсортированных контейнеров. Результат записывается в другой контейнер.Please open Telegram to view this post
VIEW IN TELEGRAM
В C++ функция
std::adjacent_find
из заголовка <algorithm>
ищет первый элемент в контейнере, который имеет соседний элемент с таким же значением или удовлетворяет заданному условию. Это удобно для обнаружения повторений или паттернов.Please open Telegram to view this post
VIEW IN TELEGRAM
Метод wcscmp()
Функция wcscmp() определена в заголовочном файле cwchar.h . Функция wcscmp() используется для сравнения двух широких строк, заканчивающихся нулем, и это сравнение выполняется лексикографически.
Подробнее можно почитать здесь.
Функция wcscmp() определена в заголовочном файле cwchar.h . Функция wcscmp() используется для сравнения двух широких строк, заканчивающихся нулем, и это сравнение выполняется лексикографически.
Подробнее можно почитать здесь.
Метод difftime()
Метод difftime() используется для вычисления разницы между двумя значениями времени в секундах.
Подробнее можно почитать здесь.
Метод difftime() используется для вычисления разницы между двумя значениями времени в секундах.
Подробнее можно почитать здесь.
Просмотр все файлов в папке с помощью C++
Для того, чтобы просмотреть все файлы в папке с помощью C++, можно использовать функцию
В данном примере мы получаем текущую директорию с помощью функции
Для того, чтобы просмотреть все файлы в папке с помощью C++, можно использовать функцию
std::filesystem::directory_iterator()
. Данная функция позволяет перебирать все файлы в указанной директории.В данном примере мы получаем текущую директорию с помощью функции
fs::current_path()
, а затем проходим по всем файлам в этой директории с помощью цикла for
. Внутри цикла мы выводим путь к каждому файлу с помощью метода entry.path()
.Объясните на примере что такое хеш-функция?
Хеш-функция - это функция, которая принимает на вход некоторые данные и возвращает фиксированный размер выходных данных, называемый хешем. Такие функции широко используются в C++ для решения задач с поиском и индексированием данных. Они позволяют быстро находить элементы в массивах или хранилищах данных.
Рассмотрим применение на примере кода выше:
Мы создаем объект хеш-функции для строки и используем его для вычисления хеша для строки "Hello, world!". Результатом выполнения программы будет вывод на экран хеш-значения для этой строки.
Хеш-функция - это функция, которая принимает на вход некоторые данные и возвращает фиксированный размер выходных данных, называемый хешем. Такие функции широко используются в C++ для решения задач с поиском и индексированием данных. Они позволяют быстро находить элементы в массивах или хранилищах данных.
Рассмотрим применение на примере кода выше:
Мы создаем объект хеш-функции для строки и используем его для вычисления хеша для строки "Hello, world!". Результатом выполнения программы будет вывод на экран хеш-значения для этой строки.
-->«оператор»
Вы можете использовать
-->«оператор» в цикле while в качестве оператора «Переход к».
Например, вы можете печатать числа 7 6 5 4 3 2 1 с помощью цикла while следующим образом.
Примечание:
--> на самом деле это не оператор, а комбинация двух операторов --и >. Вышеупомянутое while то же самое while( (x--) > 0 ), что читается как «уменьшить x на 1, а затем сравнить результат с 0».
Вы можете использовать
-->«оператор» в цикле while в качестве оператора «Переход к».
Например, вы можете печатать числа 7 6 5 4 3 2 1 с помощью цикла while следующим образом.
Примечание:
--> на самом деле это не оператор, а комбинация двух операторов --и >. Вышеупомянутое while то же самое while( (x--) > 0 ), что читается как «уменьшить x на 1, а затем сравнить результат с 0».
Взаимодействие между процессами на С++ и PHP. Сокеты, семафоры и разделяемая память
Есть некоторый сервис, написанный на C++, работающий в виде демона. Требуется к этому сервису отправлять запросы из web-приложения, реализованного на PHP. Сами по себе запросы и ответы достаточно короткие (порядка килобайта в среднем размер запроса и порядка сотен байт размер ответа).
Смотреть статью
Есть некоторый сервис, написанный на C++, работающий в виде демона. Требуется к этому сервису отправлять запросы из web-приложения, реализованного на PHP. Сами по себе запросы и ответы достаточно короткие (порядка килобайта в среднем размер запроса и порядка сотен байт размер ответа).
Смотреть статью
Хабр
Взаимодействие между процессами на С++ и PHP. Сокеты, семафоры и разделяемая память
Доброго всем дня! Хочу рассказать о своём практическом опыте реализации взаимодействия между процессами в среде Linux и попытках сделать обмен максимально возможно эффективным. Сравним разные виды...