Форум программистов, компьютерный форум, киберфорум
C++20
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Старый
Представления как элементы данных для пользовательских итераторов - Оптимизация
Запись от bytestream размещена 04.08.2025 в 16:51
Показов 5129 Комментарии 0
Метки c++, c++20, range, sfinae, stl

Нажмите на изображение для увеличения
Название: Представления как элементы данных для пользовательских итераторов 3.jpg
Просмотров: 370
Размер:	170.8 Кб
ID:	11029
Разумеется, у представлений и их использования для создания пользовательских итераторов не только сплошные преимущества. За годы экспериментов с этим подходом я набил немало шишек и хочу поделиться опытом, чтобы вы не наступали на те же грабли.

Типичные ошибки при реализации



Первое, с чем я регулярно сталкиваюсь (и что часто прижигает новичков в работе с представлениями)...
Аватар для bytestream
Старый
Представления как элементы данных для пользовательских итераторов - Создание собственного итератора-представления
Запись от bytestream размещена 03.08.2025 в 12:49
Показов 4138 Комментарии 0

Нажмите на изображение для увеличения
Название: Представления как элементы данных для пользовательских итераторов 2.jpg
Просмотров: 446
Размер:	196.7 Кб
ID:	11028
Я хочу показать, как создать собственный итератор, используя представления в качестве членов класса. Для меня этот подход стал настоящим откровением, когда я пытался решить классическую проблему обхода вложенных структур данных.

Итератор для вектора векторов



Представьте типичную задачу с собеседования: у вас есть вектор векторов, и вам нужно реализовать итератор,...
Аватар для bytestream
Старый
Представления как элементы данных для пользовательских итераторов - Введение
Запись от bytestream размещена 02.08.2025 в 21:55
Показов 4151 Комментарии 0

Нажмите на изображение для увеличения
Название: Представления как элементы данных для пользовательских итераторов.jpg
Просмотров: 425
Размер:	169.6 Кб
ID:	11027
Когда я впервые столкнулся с представлениями (views) в C++20, то сразу понял - это игра по новым правилам. В мире, где производительность по-прежнему стоит во главе угла, а память все дороже, возможность создавать абстракции без накладных расходов выглядит почти как магия. Но это не магия, а...
Аватар для bytestream
Старый
Форматирование текста с std::format в C++
Запись от bytestream размещена 07.05.2025 в 15:03
Показов 3556 Комментарии 0
Метки c++, c++20, std::format

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

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

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

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

Нажмите на изображение для увеличения
Название: 054cc24f-11a2-42ec-9f9e-ac086a45ae40.jpg
Просмотров: 226
Размер:	197.1 Кб
ID:	10710
Конкурентность и параллелизм — два термина, которые нередко используются как синонимы, хотя между ними пролегает пропасть смысла. Конкурентность — это возможность выполнять задачи с перекрывающимися временными рамками, даже если на самом деле они выполняются...
Аватар для NullReferenced
Старый
C++ в XXI веке - Эволюция языка и взгляд Бьярне Страуструпа
Запись от bytestream размещена 29.04.2025 в 13:54
Показов 6244 Комментарии 0
Метки c++, c++20, c++23, c++26, stroustrup

Нажмите на изображение для увеличения
Название: 38c6a74a-1e51-4fc9-b831-be09c85bc409.jpg
Просмотров: 172
Размер:	143.3 Кб
ID:	10696
C++ существует уже более 45 лет с момента его первоначальной концепции. Как и было задумано, он эволюционировал, отвечая на новые вызовы, но многие разработчики продолжают использовать C++ так, будто на дворе всё ещё прошлое тысячелетие — когда телефоны приходилось...
Аватар для bytestream
Старый
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
Запись от NullReferenced размещена 07.04.2025 в 13:15 / C++ for fun and for life
Показов 5525 Комментарии 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
Показов 4952 Комментарии 0

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

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

Нажмите на изображение для увеличения
Название: 6e36176d-7698-445c-b8ad-0b85590be921.jpg
Просмотров: 260
Размер:	134.0 Кб
ID:	10492
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление непрерывной последовательности объектов, которое ссылается на существующие...
Аватар для NullReferenced
Старый
std::span в C++: Подпредставлени­я и срезы
Запись от NullReferenced размещена 18.03.2025 в 21:27 / C++ for fun and for life
Показов 2030 Комментарии 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
Показов 1991 Комментарии 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
Старый
std::span в C++: Введение в невладеющее представление
Запись от NullReferenced размещена 18.03.2025 в 20:50 / C++ for fun and for life
Показов 1936 Комментарии 0
Метки c++, c++20, std::span

Нажмите на изображение для увеличения
Название: 9da2ed95-f2c6-4369-ae08-df4084222522.jpg
Просмотров: 151
Размер:	197.6 Кб
ID:	10450
С появлением стандарта C++20 у нас появился новый инструмент — std::span, который представляет собой невладеющее представление для работы с последовательностями данных.

std::span — это легковесный объект, который предоставляет доступ к непрерывной последовательности элементов без владения ими. По сути, это "взгляд" на существующие...
Аватар для NullReferenced
Старый
Рейтинг: 5.00. Голосов: 2.
Преобразование строк в C++: std::from_chars от C++17 до C++26
Запись от NullReferenced размещена 15.03.2025 в 20:26 / C++ for fun and for life
Показов 3105 Комментарии 3

Нажмите на изображение для увеличения
Название: a322ada0-7ec7-4ee3-b03d-ffc9f20e904d.jpg
Просмотров: 201
Размер:	130.0 Кб
ID:	10414
Конвертация строк в числа — задача, с которой сталкивается практически каждый C++ разработчик. Несмотря на кажущуюся простоту, эта операция таит множество подводных камней и неочевидных последствий для производительности и надежности кода. До появления C++17 у нас имелся целый зоопарк различных методов для преобразования текстовых данных в числовые значения. Каждый из них обладал своими особенностями и недостатками:

Функции старого стиля из C предлагали...
Аватар для NullReferenced
Старый
Стандарты C++ от C++98 до C++26
Запись от NullReferenced размещена 08.03.2025 в 21:47 / C++ for fun and for life
Показов 5742 Комментарии 0
Метки c++, c++11, c++14, c++17, c++20, c++23, c++26, c++98

Нажмите на изображение для увеличения
Название: a87625d1-ca52-4aa9-99bd-39628c3e265a.jpg
Просмотров: 481
Размер:	194.1 Кб
ID:	10341
Первый официальный стандарт C++ появился на свет в 1998 году, спустя почти два десятилетия после создания самого языка Бьярном Страуструпом. Это был важнейший шаг — C++ наконец-то получил чёткую спецификацию, что положило конец "диалектам" компиляторов и упростило жизнь программистов....
Аватар для NullReferenced
Новые блоги и статьи
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru