Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Старый
Форматирование текста с std::format в C++
Запись от bytestream размещена 07.05.2025 в 15:03
Показов 3747 Комментарии 0
Метки c++, c++20, std::format

Нажмите на изображение для увеличения
Название: 8907d03d-3a4c-4c84-bcc1-0ab1b715076b.jpg
Просмотров: 204
Размер:	234.3 Кб
ID:	10761
Форматирование текста — одна из самых распространённых задач, с которыми сталкивается каждый разработчик. За долгую историю C++ было создано несколько подходов к решению этой казалось бы тривиальной проблемы, но, как часто бывает в мире программирования, у каждого из них обнаружились свои недостатки. Всё начиналось с печально известного семейства функций printf, унаследованных из языка C. Помню свой первый крупный проект на C++ — я тогда...
Аватар для bytestream
Старый
Гайд по std::span в C++
Запись от NullReferenced размещена 07.05.2025 в 10:39 / C++ for fun and for life
Показов 5006 Комментарии 0
Метки c++, c++20, std::span

Нажмите на изображение для увеличения
Название: 855ddf89-42d5-41a7-9291-cd590bf5d516.jpg
Просмотров: 200
Размер:	273.6 Кб
ID:	10756
std::span — это решение реальной проблемы, с которой сталкиваются все C++ разработчики: как эффективно передавать последовательности данных между функциями, не вдаваясь в детали их внутренного представления? Раньше нам приходилось писать перегрузки функций для разных типов контейнеров, создавать собственные адаптеры или просто использовать указатели с длиной — все эти подходы не только неэлегантны, но и чреваты ошибками. Вся прелесть std::span в его универсальности....
Аватар для NullReferenced
Старый
Рейтинг: 5.00. Голосов: 1.
Создание микросервисов с gRPC и Protobuf в C++
Запись от bytestream размещена 06.05.2025 в 11:29
Показов 7442 Комментарии 0

Нажмите на изображение для увеличения
Название: ac5668fa-cb15-465a-a5d2-cc7eacdb0bce.jpg
Просмотров: 210
Размер:	213.4 Кб
ID:	10751
Монолитные приложения, которые ещё недавно считались стандартом индустрии, уступают место микросервисной архитектуре — подходу, при котором система разбивается на небольшие автономные сервисы, каждый из которых отвечает за конкретную бизнес-функцию. Такая декомпозиция...
Аватар для bytestream
Старый
Рейтинг: 5.00. Голосов: 1.
Реализация своих итераторов в C++
Запись от NullReferenced размещена 05.05.2025 в 10:20 / C++ for fun and for life
Показов 2913 Комментарии 0
Метки c++

Нажмите на изображение для увеличения
Название: db53fca5-4a8f-4d9a-9f3c-948b0ffc694d.jpg
Просмотров: 242
Размер:	191.0 Кб
ID:	10746
Итераторы в C++ — это абстракция, которая связывает весь экосистему Стандартной Библиотеки Шаблонов (STL) в единое целое, позволяя алгоритмам работать с разнородными структурами данных без знания их внутренней реализации. Создание собственных итераторов — это как...
Аватар для NullReferenced
Старый
Реализация шаблонов проектирования GoF на C++
Запись от NullReferenced размещена 04.05.2025 в 15:56 / C++ for fun and for life
Показов 2161 Комментарии 0
Метки c++, gof, oop, patterns, ооп

Нажмите на изображение для увеличения
Название: 06b915df-a9ba-4bd4-8fa0-728b5554a9c9.jpg
Просмотров: 212
Размер:	270.8 Кб
ID:	10739
"Банда четырёх" (Gang of Four или GoF) — Эрих Гамма, Ричард Хелм, Ральф Джонсон и Джон Влиссидес — в 1994 году сформировали канон шаблонов, который выдержал проверку временем. И хотя C++ претерпел немало изменений с тех пор (попробуйте сравнить C++98 и C++20 — это как сопоставить телегу с космическим кораблем), подходы GoF остаются актуальными....
Аватар для NullReferenced
Старый
Многопоточность в C++: Современные техники C++26
Запись от bytestream размещена 04.05.2025 в 12:33
Показов 7958 Комментарии 0

Нажмите на изображение для увеличения
Название: 4a8b9049-fd0e-4828-9530-42a780e5da71.jpg
Просмотров: 262
Размер:	332.2 Кб
ID:	10732
C++ долго жил по принципу "один поток — одна задача" — как старательный солдатик, выполняющий команды одну за другой. В то время, когда процессоры уже обзавелись несколькими ядрами, этот подход стал похож на ситуацию, когда в комнате полно рабочих, но только один из них что-то делает, а остальные курят в сторонке.

До стандарта C++11 многопоточность в C++ напоминала дикий запад — каждый выживал как мог. Программисты...
Аватар для bytestream
Старый
Использование корутин C++ для асинхронных задач
Запись от bytestream размещена 03.05.2025 в 20:09
Показов 5962 Комментарии 0

Нажмите на изображение для увеличения
Название: 31565451-1274-451d-a716-f5afb409ce3a.jpg
Просмотров: 189
Размер:	183.3 Кб
ID:	10727
Разработчики, погруженные в мир современного программирования, ежедневно сталкиваются с неизбежным сближением высокой производительности и простоты кода. Асинхронное программирование – одна из тех областей, где достичь этого баланса традиционно считалось...
Аватар для bytestream
Старый
Алгоритм Дейкстры на C++
Запись от NullReferenced размещена 02.05.2025 в 22:15 / C++ for fun and for life
Показов 7711 Комментарии 0
Метки algorithm, c++, c++20, dijkstra

Нажмите на изображение для увеличения
Название: 39be7ef8-cfb5-4583-a7d8-3f51b266635b.jpg
Просмотров: 279
Размер:	247.5 Кб
ID:	10719
Среди алгоритмов поиска кратчайшего пути алгоритм Дейкстры – настоящий старожил, который, несмотря на почтенный возраст, остаётся одним из самых востребованных инструментов в арсенале программиста. Разработанный нидерландским учёным Эдсгером Дейкстрой в 1956...
Аватар для NullReferenced
Старый
Конкурентность, асинхронность и параллелизм в C++
Запись от NullReferenced размещена 02.05.2025 в 12:55 / C++ for fun and for life
Показов 5048 Комментарии 0

Нажмите на изображение для увеличения
Название: 054cc24f-11a2-42ec-9f9e-ac086a45ae40.jpg
Просмотров: 240
Размер:	197.1 Кб
ID:	10710
Конкурентность и параллелизм — два термина, которые нередко используются как синонимы, хотя между ними пролегает пропасть смысла. Конкурентность — это возможность выполнять задачи с перекрывающимися временными рамками, даже если на самом деле они выполняются...
Аватар для NullReferenced
Старый
Resource Acquisition is Initialization (RAII) в C++
Запись от NullReferenced размещена 01.05.2025 в 21:57 / C++ for fun and for life
Показов 2882 Комментарии 0
Метки c++, raii, stroustrup

Нажмите на изображение для увеличения
Название: 582664cf-a0c3-4929-aaf3-02df46b56c28.jpg
Просмотров: 185
Размер:	268.0 Кб
ID:	10705
Кодишь на C++? Тогда ты наверняка сталкивался с этой ситуацией: выделил память, поработал с ней, а потом... забыл освободить. Или открыл файл, но не закрыл его из-за неожиданого исключения. Такие мелочи превращаются в сложно отлавливаемые баги, утечки памяти и выброшеные...
Аватар для NullReferenced
Старый
Создание своего пула потоков на C++
Запись от bytestream размещена 01.05.2025 в 14:07
Показов 4417 Комментарии 1

Нажмите на изображение для увеличения
Название: 9dc32d80-0500-4757-8090-cfed9a45873d.jpg
Просмотров: 178
Размер:	150.4 Кб
ID:	10703
Стандартная библиотека C++ со времен C++11 значительно упростила работу с потоками, но, как ни странно, до сих пор не предоставляет готового пула потоков. Некоторые сторонние решения, конечно, существуют, но они либо слишком тяжеловесны, либо недостаточно гибки для специфических...
Аватар для bytestream
Старый
C++ в XXI веке - Эволюция языка и взгляд Бьярне Страуструпа
Запись от bytestream размещена 29.04.2025 в 13:54
Показов 6294 Комментарии 0
Метки c++, c++20, c++23, c++26, stroustrup

Нажмите на изображение для увеличения
Название: 38c6a74a-1e51-4fc9-b831-be09c85bc409.jpg
Просмотров: 179
Размер:	143.3 Кб
ID:	10696
C++ существует уже более 45 лет с момента его первоначальной концепции. Как и было задумано, он эволюционировал, отвечая на новые вызовы, но многие разработчики продолжают использовать C++ так, будто на дворе всё ещё прошлое тысячелетие — когда телефоны приходилось...
Аватар для bytestream
Старый
Разработка кастомных расширений для компилятора C++
Запись от NullReferenced размещена 29.04.2025 в 12:21 / C++ for fun and for life
Показов 5389 Комментарии 0
Метки c++, clang, llvm

Нажмите на изображение для увеличения
Название: a9f576c6-981d-4502-a5ec-189299c2435e.jpg
Просмотров: 144
Размер:	145.4 Кб
ID:	10694
Создание кастомных расширений для компиляторов C++ — инструмент оптимизации кода, внедрения новых языковых функций и автоматизации задач. Многие разработчики недооценивают гибкость современных компиляторов и возможности их настройки. Расширения позволяют вмешиваться в процесс компиляции...
Аватар для NullReferenced
Старый
Динамические массивы в C++ - создание и использование
Запись от NullReferenced размещена 27.04.2025 в 19:16 / C++ for fun and for life
Показов 6546 Комментарии 0
Метки c++

Нажмите на изображение для увеличения
Название: ae6608eb-1188-4d85-a28e-7bdf860854a1.jpg
Просмотров: 184
Размер:	233.2 Кб
ID:	10687
Динамические массивы представляют собой один из фундаментальных инструментов программирования на C++, позволяющий создавать структуры данных, размер которых определяется во время выполнения программы, а не на этапе компиляции. В отличие от статических массивов, которые имеют фиксированный размер, динамические массивы обеспечивают гибкость и эффективное использование памяти, необходимые для создания сложных и масштабируемых приложений.

Понятие динамических

...
Аватар для NullReferenced
Старый
Параллельное программирование с OpenMP в C++
Запись от NullReferenced размещена 24.04.2025 в 22:11 / C++ for fun and for life
Показов 9425 Комментарии 0

Нажмите на изображение для увеличения
Название: a3b7cbf5-0bfe-473b-a6f6-8d068214c588.jpg
Просмотров: 218
Размер:	239.1 Кб
ID:	10645
Параллельное программирование — подход к созданию программ, когда одна задача разбивается на несколько подзадач, которые могут выполняться одновременно. Оно стало необходимым навыком для разработчиков, стремящихся максимально использовать возможности современного оборудования. Когда речь заходит о C++, одним из самых доступных и мощных инструментов для реализации параллелизма становится OpenMP (Open Multi-Processing). Эта технология представляет собой...
Аватар для NullReferenced
Старый
Итераторы в C++: Продвинутые техники использования
Запись от bytestream размещена 16.04.2025 в 17:50
Показов 3922 Комментарии 0
Метки c++

Нажмите на изображение для увеличения
Название: 45e6629f-8035-416b-a9c4-275a664c6c50.jpg
Просмотров: 123
Размер:	292.2 Кб
ID:	10601
Итераторы - одна из самых гибких и выразительных концепций в C++, позволяющих абстрагировать обход элементов контейнера от его внутренней реализации. За прошедшие годы они эволюционировали от простых указателей до сложных абстракций, способных выражать бесконечные последовательности, ленивые...
Аватар для bytestream
Старый
Хеш-функции std::hash в C++ программировании
Запись от NullReferenced размещена 15.04.2025 в 21:49 / C++ for fun and for life
Показов 9886 Комментарии 1
Метки c++, std::hash

Нажмите на изображение для увеличения
Название: c291931c-58dd-48f4-be87-0bbf6ceae25a.jpg
Просмотров: 179
Размер:	313.1 Кб
ID:	10596
Хеширование — фундаментальная концепция в компьютерных науках, играющая важную роль в эффективной обработке и хранении данных. В C++ функциональность std::hash является неотъемлемой частью стандартной библиотеки, предоставляя разработчикам надежный инструмент для работы с хеш-значениями. По своей сути, хеширование представляет процесс...
Аватар для NullReferenced
Старый
Кастомные аллокаторы в C++ и оптимизация управления памятью
Запись от bytestream размещена 14.04.2025 в 15:54
Показов 6670 Комментарии 0
Метки c++

Нажмите на изображение для увеличения
Название: 67dc6cbc-8032-46f7-a85b-4a2bcb5aeaba.jpg
Просмотров: 177
Размер:	180.5 Кб
ID:	10590
Работа с памятью в С++ всегда была и остаётся одной из самых увлекательных и сложных задач для программиста. Любой опытный C++ разработчик подтвердит: стандартные механизмы аллокации памяти – штука удобная, но подчас совершенно негибкая. Типичный вызов new и delete прекрасно работает в большинстве повседневных задач, но стоит вашему приложению выйти на территорию высокой производительности...
Аватар для bytestream
Старый
std::expected в C++: Управление ошибками
Запись от bytestream размещена 12.04.2025 в 19:16
Показов 5952 Комментарии 0
Метки c++, c++23, std::expected

Нажмите на изображение для увеличения
Название: 9aacaf76-f3e3-4128-a329-189c8f3d92cb.jpg
Просмотров: 188
Размер:	174.0 Кб
ID:	10583
Обработка ошибок всегда была важной и одновременно сложной задачей в программировании на C++. На протяжении долгого времени разработчики использовали различные подходы: возвращаемые коды ошибок, исключения, специальные значения или указатели. Каждый метод имел свои недостатки: коды ошибок затрудняли...
Аватар для bytestream
Старый
Статическое и динамическое связывание в C++
Запись от bytestream размещена 09.04.2025 в 11:08
Показов 3780 Комментарии 0
Метки c++, linking

Нажмите на изображение для увеличения
Название: 2d3a6baf-3c46-4f72-a9d5-0ea7fb0fd22b.jpg
Просмотров: 244
Размер:	155.4 Кб
ID:	10558
Связывание в C++ — одна из тех "невидимых" технических сторон программирования, о которой многие имеют лишь поверхностное представление, хотя эта концепция критически влияет на производительность, безопасность и удобство сопровождения кода. Если вы когда-нибудь...
Аватар для bytestream
Старый
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
Запись от NullReferenced размещена 07.04.2025 в 13:15 / C++ for fun and for life
Показов 5571 Комментарии 0
Метки c++, c++20, c++23, c++26, std::ranges

Нажмите на изображение для увеличения
Название: bf44ba56-2caf-4fac-9629-78846ff8a82d.jpg
Просмотров: 250
Размер:	237.7 Кб
ID:	10547
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от использования массивов в C-стиле до современной библиотеки ranges. Однако некоторые казалось бы простые операции, как объединение нескольких последовательностей, долгое время...
Аватар для NullReferenced
Старый
Рейтинг: 5.00. Голосов: 1.
Многопоточное программирование: Rust против C++
Запись от golander размещена 06.04.2025 в 10:49 / go go just go
Показов 4973 Комментарии 0

Нажмите на изображение для увеличения
Название: 791ba567-8ab9-4c84-ae70-c8d54f3f2740.jpg
Просмотров: 310
Размер:	120.5 Кб
ID:	10540
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих версиях (C++17 и C++20) набор многопоточных инструментов значительно расширился. Однако исторический багаж и обратная совместимость привели к тому, что параллельное программирование в C++ часто связано с множеством подводных камней.

Rust изначально проектировался...
Аватар для golander
Старый
Рейтинг: 5.00. Голосов: 1.
std::vector в C++: от основ к оптимизации производительности
Запись от NullReferenced размещена 05.04.2025 в 22:11 / C++ for fun and for life
Показов 9216 Комментарии 0
Метки c++, openmp, std::vector

Нажмите на изображение для увеличения
Название: 444c0ef1-5c73-40f4-87e4-2499dc811586.jpg
Просмотров: 205
Размер:	288.0 Кб
ID:	10539
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector объединяет в себе гибкость динамических структур данных с эффективностью, сравнимой с обычными массивами C. Именно это сочетание делает его незаменимым для множества задач - от простейших алгоритмов до высоконагруженных...
Аватар для NullReferenced
Старый
std::mutex в C++: Советы и примеры использования
Запись от bytestream размещена 03.04.2025 в 11:03
Показов 6774 Комментарии 0

Нажмите на изображение для увеличения
Название: ff86457d-b65b-4186-826d-a8876f864e2b.jpg
Просмотров: 275
Размер:	208.6 Кб
ID:	10516
std::mutex - это механизм взаимного исключения, который гарантирует, что критический участок кода выполняется только одним потоком в каждый момент времени. Это простое, но могущественное средство предотвращения состояний гонки (race conditions) при доступе к разделяемым данным. По сути, мьютекс работает как замок: поток блокирует его перед входом в критическую секцию и разблокирует после выхода.

В контексте многопоточного программирования на C++ мьютексы...
Аватар для bytestream
Старый
std::span в C++: Производительность и лучшие практики
Запись от NullReferenced размещена 28.03.2025 в 22:18 / C++ for fun and for life
Показов 6640 Комментарии 0
Метки c++, c++20, std::span

Нажмите на изображение для увеличения
Название: 6e36176d-7698-445c-b8ad-0b85590be921.jpg
Просмотров: 260
Размер:	134.0 Кб
ID:	10492
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление непрерывной последовательности объектов, которое ссылается на существующие...
Аватар для NullReferenced
Старый
Компиляция C++ с Clang API
Запись от NullReferenced размещена 24.03.2025 в 08:31 / C++ for fun and for life
Показов 9339 Комментарии 0
Метки c++, clang, clang api, llvm

Нажмите на изображение для увеличения
Название: ddc7e11b-7032-49e2-80fa-55036213e014.jpg
Просмотров: 260
Размер:	230.4 Кб
ID:	10487
Компиляторы обычно воспринимаются как черные ящики, которые превращают исходный код в исполняемые файлы. Мы запускаем компилятор командой в терминале, и вуаля — получаем бинарник. Но что если нужно программно управлять процессом компиляции? Что если этот инструмент...
Аватар для NullReferenced
Старый
C++26: Индексирование пакетов и метапрограммиро­вание
Запись от bytestream размещена 20.03.2025 в 19:04
Показов 3317 Комментарии 1
Метки c++, c++26

Нажмите на изображение для увеличения
Название: be00bf89-86a4-449c-a460-432fb716aeaf.jpg
Просмотров: 164
Размер:	154.9 Кб
ID:	10476
Эволюция C++ продолжается стремительными темпами – каждый новый стандарт приносит функциональность, о которой мы мечтали годами. Звучит слишком громко? Если вы когда-либо боролись с вариадическими шаблонами, пытаясь добраться до конкретного элемента в пакете...
Аватар для bytestream
Старый
C++26: Что мы потеряли
Запись от bytestream размещена 19.03.2025 в 20:25
Показов 2501 Комментарии 0
Метки c++, c++26

Нажмите на изображение для увеличения
Название: 192bd058-df5d-4620-bcf9-3d1f522d349c.jpg
Просмотров: 195
Размер:	181.1 Кб
ID:	10462
С каждым новым стандартом C++ обретает новые возможности — это ясно, как божий день. Однако есть и другая сторона — избавление от устаревших и проблемных элементов. Обычно удаление функциональности из языка происходит в два этапа. Сначала определенная конструкция...
Аватар для bytestream
Старый
std::span в C++: Подпредставлени­я и срезы
Запись от NullReferenced размещена 18.03.2025 в 21:27 / C++ for fun and for life
Показов 2131 Комментарии 0
Метки c++, c++20, std::span

Нажмите на изображение для увеличения
Название: 69cb2d7c-adfc-46de-b3f7-dbdb4aafc06b.jpg
Просмотров: 218
Размер:	238.2 Кб
ID:	10453
Если вы когда-нибудь работали с большими объемами данных в C++, то наверняка сталкивались с необходимостью манипулировать отдельными частями массивов или контейнеров. Традиционные подходы часто требуют создания копий данных, что приводит к избыточному потреблению памяти и снижению производительности. В современном C++ появился способ решения этой проблемы — std::span, представленный в стандарте C++20.

...
Аватар для NullReferenced
Старый
std::span в C++: Доступ к элементам и итерирование
Запись от NullReferenced размещена 18.03.2025 в 21:20 / C++ for fun and for life
Показов 2074 Комментарии 0
Метки c++, c++20, std::span

Нажмите на изображение для увеличения
Название: 5c7f0fc1-91c1-49f3-8743-99269c28dc64.jpg
Просмотров: 191
Размер:	181.1 Кб
ID:	10452
В C++ каждый разработчик сталкивается с проблемой эффективного управления последовательностями данных. Представьте: вы работаете с массивом, передаете его в функцию, а затем в другую, и каждый раз сомневаетесь — правильно ли установлены границы, не выйдете ли за пределы. Именно эту головную боль призван устранить std::span — относительно новый компонент стандартной библиотеки, появившийся в C++20.

std::span — это невладеющее представление...
Аватар для NullReferenced
Новые блоги и статьи
Debian 13: Установка Lazarus QT5
ВитГо 09.05.2026
Эта инструкция моя компиляция инструкций volvo https:/ / www. cyberforum. ru/ blogs/ 203668/ 10753. html и его же старой инструкции по установке Lazarus с gtk2. . .
Нейросеть на алгоритме "эстафета хвоста" как перспектива.
Hrethgir 06.05.2026
На десерт, когда запущу сервер. Статья тут https:/ / habr. com/ ru/ articles/ 1030914/ . Автор я сам, нейросеть только помогает в вопросах которые мне не известны - не знаю людей которые знали-бы. . .
Асинхронный приём данных из COM-порта
Argus19 01.05.2026
Асинхронный приём данных из COM-порта Купил на aliexpress термопринтер QR701. Он оказался странным. Поключил к Arduino Nano. Был очень удивлён. Наотрез отказывается печатать русские буквы. Чтобы. . .
попытка написать игровой сервер на C++
pyirrlicht 29.04.2026
попытка написать игровой сервер на плюсах с открытым бесконечным миром. возможно получится прикрутить интерпретатор питон для кастомизации игровой логики. что есть на текущий момент:. . .
Контроль уникальности выбранного документа-основания при изменении реквизита
Maks 28.04.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ЗаявкаНаРемонтСпецтехники", разработанного в КА2. Задача: уведомлять пользователя, если указанная заявка (документ-основание). . .
Благородство как наказание
Maks 24.04.2026
У хорошего человека отношения с женщинами всегда складываются трудно. А я человек хороший. Заявляю без тени смущения, потому что гордиться тут нечем. От хорошего человека ждут соответствующего. . .
Валидация и контроль данных табличной части документа перед записью
Maks 22.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в КА2. Задача: контроль и валидация данных табличной части документа перед записью с учетом регламента компании. . .
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru