Предоставляет эффективное, не владеющее представление непрерывных областей памяти произвольных контейнеров или буферов.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: cd35d03068cbПроисхождениеОткрытые вопросы (3)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Предоставляет эффективное, не владеющее представление непрерывных областей памяти произвольных контейнеров или буферов.
Класс ara::core::Span предоставляет не владеющее непрерывное представление областей памяти и обеспечивает эффективную инкапсуляцию массивов или буферов без затрат на копирование [SWS_CORE_01942]. Приложения обычно используют этот класс для передачи окон данных, а также для создания частичных представлений с помощью операций среза (slicing). Вызывающие стороны должны строго обеспечивать, чтобы время жизни базовой памяти превышало время жизни представления, а при таких операциях, как subspan(), соблюдались допустимые границы, поскольку нарушение границ вызывает неопределенное поведение [SWS_CORE_01966].
Контекст
Класс ara::core::Span представляет собой соответствующую стандарту реализацию непрерывного представления последовательности, ориентированную на std::span из [views.span]. Будучи легковесной абстракцией, он инкапсулирует указатель на первый элемент и количество доступных элементов, не являясь при этом владельцем данных. Он служит единым интерфейсом между компонентами, предоставляющими данные, и алгоритмами, обрабатывающими эти данные.
К основным участникам взаимодействия относятся:
Вызывающая логика приложения: использует представление для операций чтения или записи в последовательных областях памяти без выделения памяти или затрат на копирование.
Вторичные представления (subspans): дополнительные экземпляры ara::core::Span, получаемые путем декомпозиции из родительского представления [SWS_CORE_01965][SWS_CORE_01966].
Экземпляры ara::core::Span спроектированы как чистые объекты-значения без собственного управления ресурсами. Создание выполняется либо как пустой span через конструктор по умолчанию [SWS_CORE_01941], либо путем прямого указания начального адреса и количества элементов [SWS_CORE_01942], либо через интервал указателей из начала и конца [SWS_CORE_01943]. Кроме того, доступны типизированные конструкторы для массивов C [SWS_CORE_01944], контейнеров типа ara::core::Array[SWS_CORE_01945][SWS_CORE_01946], а также обобщенных контейнеров [SWS_CORE_01947][SWS_CORE_01948]. Существующие объекты span можно дублировать с помощью стандартного конструктора копирования [SWS_CORE_01949] или через преобразующие конструкторы с совместимыми типами элементов и размерами (extents) [SWS_CORE_01950].
Поскольку ara::core::Span не берет на себя никакого владения ссылочными данными, деструктор имеет стандартную реализацию и специфицирован как noexcept=default[SWS_CORE_01951]. Отсюда вытекает фундаментальный инвариант (Интерпретация: допущение 1): время жизни базового буфера памяти всегда должно охватывать как минимум время жизни всех ссылающихся на него объектов span; при уничтожении буфера оставшиеся объекты span становятся недействительными. Вопрос (открытый) Присваивание через оператор присваивания выполняется тривиально путем поверхностного копирования [SWS_CORE_01952]. Поскольку все функции доступа объявлены как noexcept и не имеют внутренних механизмов синхронизации, одновременный доступ на чтение к одному и тому же экземпляру span из нескольких потоков, вероятно, безопасен при условии, что базовая область памяти параллельно не модифицируется (Интерпретация: допущение 2). Вопрос Q-be5a38c1097c4ee1 (открытый)
Путь использования
Типичный сценарий использования включает инкапсуляцию существующего блока данных, проверку размеров, извлечение релевантных участков и доступ к элементам:
Создание представления: приложение инстанцирует ara::core::Span на непрерывном буфере, например из экземпляра ara::core::Array[SWS_CORE_01945] или через указатели на сырые данные с указанием длины [SWS_CORE_01942].
Все методы ara::core::Span объявлены как безопасные относительно исключений и noexcept; исключения C++ не инициируются, равно как и не возвращаются объекты ошибок, такие как ara::core::ErrorCode. Состояния ошибок возникают преимущественно из-за нарушений предусловий, которые непосредственно приводят к неопределенному поведению (Undefined Behavior):
Превышение размера для префиксов и суффиксов: если при first() запрашивается количество, превышающее текущий размер (Count > size() или count > size() соответственно), поведение не определено [SWS_CORE_01961][SWS_CORE_01962]. Идентичное нарушение предусловия при last() также приводит к неопределенному поведению [SWS_CORE_01963][SWS_CORE_01964].
Недопустимые параметры поддиапазона при subspan: вызов subspan() в обязательном порядке требует соблюдения offset <= size(), а при явно указанном count (отличном от dynamic_extent) — дополнительно count <= size() - offset. Несоблюдение приводит к неопределенному поведению [SWS_CORE_01966].
Выход за пределы диапазона при доступе к элементам: оператор индексации operator[][SWS_CORE_01970], а также функции доступа front()[SWS_CORE_01959] и back()[SWS_CORE_01960] не выполняют проверку диапазона (Bounds Checking). Доступ за пределами допустимых границ, вероятно, непосредственно приводит к неопределенным обращениям к памяти (Интерпретация: допущение 3). Вопрос (открытый)
Настоящее руководство основано на спецификации AUTOSAR Adaptive R25-11 и создано автоматически.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 557e5938932aПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член crbegin класса ara::core::Span возвращает константный обратный итератор, указывающий на последний элемент ссылаемой последовательности [SWS_CORE_01978]. Функция требует заголовочного файла #include "ara/core/span.h" и следует использованию в [views.span][SWS_CORE_01978]. Возвращаемое значение типа const_reverse_iterator допускает обратную итерацию только для чтения по области памяти, описываемой диапазоном span [SWS_CORE_01978].
Поскольку crbegin объявлена как constexpr, вычисление может происходить уже во время компиляции [SWS_CORE_01978]. Что касается обработки ошибок, функция объявлена как noexcept и классифицирована как exception safe; следовательно, она не генерирует исключений, и для нее не существует ни кодов ошибок, ни сообщений DET или DEM [SWS_CORE_01978].
Что касается параллелизма и ограничений, метод квалифицирован как const; интерпретация: параллельные вызовы для чтения на одном и том же экземпляре, вероятно, являются потокобезопасными без внешней синхронизации, пока базовая область памяти не модифицируется одновременно [SWS_CORE_01978]. Вопрос Q-d63c0354556f1d23 (открытый)
Во взаимодействии с другими элементами ara::core функция crbegin следует единому паттерну для контейнеров и представлений:
ara::core::Array предлагает соответствующий интерфейс constexpr и exception safe[SWS_CORE_01260].
ara::core::StringView также предоставляет crbegin как constexpr и exception safe[SWS_CORE_02126].
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 464fedb451c3ПроисхождениеОткрытые вопросы (2)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция-член crend шаблонного класса ara::core::Span ([SWS_CORE_01979]) синхронно возвращает константный обратный итератор типа const_reverse_iterator. Функция требует включения заголовочного файла ara/core/span.h и не принимает параметров вызова. В соответствии со спецификацией поведение ориентируется на стандартное использование в [views.span]. Интерпретация: возвращенный итератор, вероятно, представляет теоретическую позицию непосредственно перед первым элементом диапазона и тем самым служит условием останова при обратной итерации. Вопрос Q-83d4ed4a6e68fb19 (открытый)
Обработка ошибок и параллелизм
Функция объявлена как noexcept и явно классифицирована как exception safe ([SWS_CORE_01979]). Вызов не генерирует исключений, и не существует ни возвращаемых значений ошибок, ни специального протоколирования ошибок через DET или DEM. Поскольку crend определена как constexpr, вычисление может выполняться непосредственно во время компиляции. Являясь чисто константной (const) функцией-членом, она не изменяет состояние экземпляра; параллельный доступ для чтения к одному и тому же экземпляру Span, следовательно, вероятно, является потокобезопасным без синхронизации. Вопрос Q-d90bd6b4f01c8af6 (открытый)
Взаимодействие
Поведение crend в ara::core::Span бесшовно вписывается в интерфейсы последовательностей и контейнеров ara::core:
ara::core::Array ([SWS_CORE_01261]) и ara::core::StringView ([SWS_CORE_02127]) предлагают идентичные сигнатуры, также объявленные как constexpr и noexcept.
ara::core::Vector ([SWS_CORE_01343]), ara::core::Map ([SWS_CORE_01451]) и ara::core::BasicString ([SWS_CORE_03050]) предоставляют аналогичные конечные точки const_reverse_iterator для динамических контейнеров.
Это указание по использованию было сгенерировано ИИ на основе спецификации AUTOSAR R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: daa0dd011e1eПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Шаблонная функция-член first<Count>() класса ara::core::Span синхронно создает новый поддиапазон из первых Count элементов текущего диапазона (span) и возвращает его как ara::core::Span<element_type, Count>[SWS_CORE_01961]. Функция объявлена в заголовочном файле ara/core/span.h и специфицирована как constexpr, а также const noexcept[SWS_CORE_01961].
Что касается обработки ошибок, функция классифицирована как безопасная относительно исключений (exception safe) и не генерирует исключений [SWS_CORE_01961]. Специфические коды ошибок, ошибочные возвращаемые значения или сообщения в DET или DEM не определены. Однако существует обязательное предусловие: поведение не определено, если параметр шаблона Count превышает размер диапазона (span) во время выполнения (Count > size()) [SWS_CORE_01961]. Вызывающие стороны должны гарантировать наличие достаточного количества элементов.
Поскольку метод объявлен как const и не модифицирует базовый объект Span, одновременный доступ на чтение из нескольких потоков без дополнительных блокировок, вероятно, является потокобезопасным (интерпретация). Вопрос Q-215ae1cc00b7a590 (открытый) Если адресуемые элементы диапазона (span) тем временем изменяются другими потоками, доступ должен быть синхронизирован извне.
Этот текст был создан ИИ. Все технические сведения основаны исключительно на спецификации AUTOSAR R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 2bb3b51c18a9ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция-член first вызывается на экземпляре ara::core::Span (предоставляемом через заголовочный файл ara/core/span.h) для создания частичного представления первых элементов последовательности [SWS_CORE_01962]. В качестве параметра передаётся желаемое количество элементов count типа size_type[SWS_CORE_01962]. Возвращаемым значением является Span<element_type, dynamic_extent>, который отображает соответствующий префикс [SWS_CORE_01962]. Поведение при этом ориентируется на семантику [views.span] из стандарта C++ [SWS_CORE_01962]. Благодаря объявлению как constexpr и noexcept метод работает синхронно, без исключений и может вычисляться уже во время компиляции [SWS_CORE_01962].
Обработка ошибок и граничные условия
Функция специфицирована как безопасная относительно исключений (exception safe); коды ошибок или специальные сообщения об ошибках (такие как DET или DEM) не предусмотрены [SWS_CORE_01962]. Для вызывающей стороны действует следующее обязательное граничное условие:
Поведение функции не определено (undefined behavior), если count > size()[SWS_CORE_01962].
Поэтому применяемый программный код перед вызовом должен самостоятельно проверить, что запрошенное количество элементов не превышает фактический размер диапазона (span).
Параллелизм и ограничения
Являясь константной функцией-членом (const), first не модифицирует вызываемый span [SWS_CORE_01962]. Относительно потокобезопасности спецификация умалчивает; однако одновременный доступ на чтение к одному и тому же span, а также к лежащим в его основе данным последовательности, вероятно, некритичен (интерпретация). Вопрос Q-8c3b51e54157dc12 (открытый) Если на эти элементы одновременно ссылаются и модифицируют их другие потоки, требуется внешняя синхронизация.
Этот текст был сгенерирован ИИ на основе спецификации AUTOSAR R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 762c5c7c0428ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Шаблонная функция-член [SWS_CORE_01963] класса ara::core::Span (заголовочный файл #include "ara/core/span.h") синхронно возвращает частичное представление последних Count элементов базовой последовательности. Она следует семантике [views.span][SWS_CORE_01963]. Поскольку параметр Count передаётся в качестве аргумента шаблона, результирующий объект Span имеет статический размер, зафиксированный уже во время компиляции.
Операция объявлена как constexpr, const, а также noexcept и специфицирована как безопасная относительно исключений (exception safe) [SWS_CORE_01963]. Возврат ошибок через коды ошибок или уведомления в DET или DEM для этой функции не предусмотрен. Однако имеет место неопределённое поведение, если Count > size()[SWS_CORE_01963]. Поэтому вызывающие стороны перед инстанцированием или выполнением должны убедиться, что текущий диапазон включает как минимум требуемое количество элементов.
Что касается параллелизма, спецификация не делает явных заявлений о потокобезопасности; однако, являясь методом без побочных эффектов const, одновременный доступ на чтение нескольких потоков к одному и тому же экземпляру Span, вероятно, некритичен, при условии что элементы в памяти, на которые он ссылается, не изменяются параллельно. Вопрос Q-120ccf3995c86b47 (открытый)
Во взаимодействии внутри модуля функция дополняет перегрузку [SWS_CORE_01964]: в то время как данный вариант [SWS_CORE_01963] требует фиксированного экстента во время компиляции, [SWS_CORE_01964] позволяет указывать переменное количество элементов во время выполнения и возвращает Span с динамическим размером (dynamic_extent).
Этот текст был сгенерирован системой ИИ на основе данных спецификации AUTOSAR R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: f839f8230576ПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция-член last класса ara::core::Span создает частичное представление (subspan), охватывающее последние count элементов текущей последовательности [SWS_CORE_01964]. Вызов выполняется синхронно и возвращает Span<element_type, dynamic_extent>[SWS_CORE_01964]. Поскольку функция объявлена как constexpr и noexcept, она также может вычисляться во время компиляции и гарантирует полную безопасность по отношению к исключениям (exception safe) [SWS_CORE_01964].
Обработка ошибок и граничные условия
Функция не генерирует исключений. Некорректным вызовом считается случай, когда аргумент count превышает фактическое количество имеющихся элементов (count > size()); в этом случае поведение не определено [SWS_CORE_01964]. Поэтому вызывающие компоненты должны перед передачей динамических значений убедиться, что требуемое количество элементов находится в допустимом диапазоне.
Параллелизм и взаимодействие
Поскольку last представляет собой операцию чтения без сохранения состояния над экземпляром span, одновременные вызовы через один и тот же Span, вероятно, безопасны, пока не модифицируются лежащие в основе элементы последовательности. Вопрос Q-ec2beaa99d9627c0 (открытый) В отличие от шаблонного варианта last<Count>()[SWS_CORE_01963], который задает размер статически, эта перегрузка определяет длину во время выполнения. Таким образом, вновь созданные последовательности, например через MakeSpan[SWS_CORE_01991], можно гибко усекать до их суффикса.
Это указание по использованию было создано автоматически. Все сведения основаны на спецификации AUTOSAR Adaptive Core R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: 3b4cbcd12a0eПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член size_bytes класса ara::core::Span возвращает общий размер ссылаемой области памяти в байтах [SWS_CORE_01968]. Семантика при этом соответствует определению в стандартном C++ согласно [views.span][SWS_CORE_01968].
Использование
Функция вызывается синхронно на существующем экземпляре ara::core::Span и требует включения заголовочного файла ara/core/span.h[SWS_CORE_01968]:
Контекст вызова и параметры: метод не принимает параметров и объявлен как const, следовательно, не изменяет состояние диапазона (span) [SWS_CORE_01968]. Благодаря квалификатору constexpr значение может вычисляться уже во время компиляции, если это допускает базовый контекст [SWS_CORE_01968].
Возвращаемое значение: возвращает значение типа size_type, представляющее размер отображаемой памяти в байтах [SWS_CORE_01968].
Обработка ошибок и безопасность исключений
Функция объявлена как noexcept и специфицирует уровень гарантии exception safe[SWS_CORE_01968]. Исключения C++ не возникают, и коды ошибок не возвращаются [SWS_CORE_01968].
Параллелизм и ограничения
Поскольку size_bytes является чисто операцией чтения (const) без побочных эффектов, одновременный вызов для одного и того же экземпляра из нескольких потоков безопасен, если ссылаемый объект Span не модифицируется одновременно (интерпретация: стандартная потокобезопасность для const-методов) [SWS_CORE_01968]. Вопрос Q-ea768d4f6fa1d12f (открытый)
Это указание по использованию было сгенерировано автоматически на основе спецификации AUTOSAR R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: dca812068dbfПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Функция-член subspan класса ara::core::Span создает поддиапазон существующего диапазона ([SWS_CORE_01965]). С помощью параметров шаблона Offset и Count начальная позиция, а также количество элементов статически определяются во время компиляции; для Count по умолчанию задано dynamic_extent. Вызов выполняется синхронно, объявлен как constexpr и noexcept и считается безопасным относительно исключений ([SWS_CORE_01965]).
В отношении поведения спецификация ссылается на стандартную конструкцию C++ [views.span] ([SWS_CORE_01965]). В отличие от перегруженной функции времени выполнения [SWS_CORE_01966], в которой некорректные границы явно приводят к неопределенному поведению, проверка здесь выполняется преимущественно при компиляции. Интерпретация: при статически известном количестве элементов выход за границы Offset или Count, вероятно, приведет к ошибке компиляции. Вопрос Q-c1b2dd93177fb266 (открытый)
Функция доступна через заголовочный файл #include "ara/core/span.h" ([SWS_CORE_01965]). Она дополняет комплементарную перегрузку [SWS_CORE_01966] для случаев, когда поддиапазоны фиксированы уже во время компиляции. Поскольку subspan является константной функцией-членом, параллельные операции чтения одного и того же исходного объекта безопасны, если на адресуемый элемент памяти параллельно не оказывается воздействие.
Это указание по использованию сгенерировано автоматически на основе спецификации AUTOSAR Adaptive R25-11.
СОЗДАНО ИИне провереноМодель: gemini-3.8-flash-medium · Усилие: medium · Температура: не регулируется · Промпт: a68a8b4ea86aПроисхождениеОткрытые вопросы (1)
переведено с немецкого руководстваgemini-3.8-flash-low · 2026-10-13 · Немецкий оригинал
Использование
Функция-член subspan класса ara::core::Span ([SWS_CORE_01966]) создает частичное представление (subspan) базовых данных. Она подключается через заголовочный файл ara/core/span.h. В качестве параметров она принимает смещение (offset), а также, опционально, количество элементов (count), значением по умолчанию для которого является dynamic_extent. Если передается count == dynamic_extent, созданное частичное представление, предположительно, охватывает все оставшиеся элементы начиная с указанного смещения. Функция объявлена как constexpr и noexcept и, согласно спецификации, считается исключениебезопасной (exception safe). Вопрос Q-f300852e8a1a87c8 (открытый)
Обработка ошибок и граничные условия
Функция не сигнализирует об ошибках ни через коды ошибок, ни через исключения C++. Вместо этого нарушение определенных предусловий приводит непосредственно к неопределенному поведению ([SWS_CORE_01966]). Вызов является определенным только в том случае, если выполнено следующее условие:
Вызывающие компоненты должны самостоятельно проверять эти границы диапазона перед вызовом, чтобы исключить неопределенное поведение во время выполнения.
Взаимодействие
В отличие от шаблонного варианта [SWS_CORE_01965], который связывает смещение и количество элементов уже во время компиляции через параметры шаблона, [SWS_CORE_01966] позволяет динамически передавать значения времени выполнения. В качестве типа возвращаемого значения она всегда возвращает экземпляр Span<element_type, dynamic_extent>.
Этот текст был сгенерирован ИИ и служит в качестве руководства на основе спецификации AUTOSAR.
gemini-3.8-flash-low· 2026-10-13 · Немецкий оригинал