👍14❤6🔥4
Позволяет представлять и передавать срезы элементов (обёртка над массивом/вектором/указателем+размером) без лишних копий.
Что важно знать:
• Не владеет данными — он хранит лишь указатель и длину; контейнер должен жить дольше span, иначе — UB.
• Синтаксис: std::span<T> (динамическая длина) и std::span<T, N> (фиксированная длина).
• Конструкторы принимают std::array, std::vector, C-массив или pointer+size
Удобно для передачи срезов без копирования, главное — не допускать dangling и отдавать span<const T> для чтения.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥18👍7❤5
Лёгкая утилита-«швейцарский нож» для TCP/UDP и UNIX-сокетов: слушает/устанавливает соединения, пересылает файлы, делает обратные оболочки, стримит и сканирует порты/граббинг баннеров.
Часто комбинируют с openssl, tar, dd для шифрования, архивации и клонирования.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥7❤4
Она применяется для быстрых операций над массивами: получение информации на отрезке и обновление значений. Всё это работает за логарифм времени!
Ключевые моменты:
• Построение: берём массив и строим по нему дерево, каждая вершина отвечает за минимум на своём участке.
• Запрос: спускаясь по дереву, можно найти минимум на любом отрезке за O(log n).
• Обновление: меняем значение в массиве, и дерево быстро перестраивается только по пути от листа к корню
Дерево отрезков моментально реагирует на изменения, не пересчитывая весь массив.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15❤9👍4🤝3
Читаем весь файл в строку!
Иногда нужно быстро загрузить весь текстовый файл в память — например, чтобы распарсить конфиг, JSON или HTML. Это можно сделать в одну строчку, без циклов и ручного копирования.
Сначала подключим необходимые библиотеки из стандартной поставки:
Теперь считаем весь файл
Результат: вся строка будет содержать полный текст файла, включая пробелы и переводы строк.
🔥 Такой способ прост, лаконичен и не требует ручного перебора или буферов — идеально для загрузки небольших текстовых файлов.
📣 C++ Ready | #практика
Иногда нужно быстро загрузить весь текстовый файл в память — например, чтобы распарсить конфиг, JSON или HTML. Это можно сделать в одну строчку, без циклов и ручного копирования.
Сначала подключим необходимые библиотеки из стандартной поставки:
#include <fstream>
#include <string>
// std::istreambuf_iterator
#include <iterator>
Теперь считаем весь файл
input.txt
в строку data
:std::string data(
(std::istreambuf_iterator<char>(std::ifstream("input.txt").rdbuf())),
std::istreambuf_iterator<char>());
Результат: вся строка будет содержать полный текст файла, включая пробелы и переводы строк.
🔥 Такой способ прост, лаконичен и не требует ручного перебора или буферов — идеально для загрузки небольших текстовых файлов.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤19👍7🔥5
Консольная утилита, которая по координатам запрашивает у Open-Meteo текущую температуру и погодный код, а в вывод добавляет соответствующее эмодзи.
Основные моменты:
• HTTP-запрос выполняется через cpr (обёртка над libcurl) с проверкой сетевых ошибок и кода 200 OK;
• nlohmann::json парсит текстовый JSON в объект, из которого легко получить поля temperature (°C) и weathercode;
• Эмодзи для кодов хранятся в std::unordered_map, а find даёт «?» для неизвестных значений.
Это позволяет быстро адаптировать CLI-клиент для курсов валют, новостей и других сервисов.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥15👍5❤4🤝1