Поделиться через


single_view class (стандартная библиотека C++)

Представление с одним элементом. Это представление полезно для тестирования для вызова кода, который должен быть предоставлен с представлением по крайней мере с одним элементом в нем.

Синтаксис

template<std::copy_constructible T>
  requires std::is_object_v<T>
class single_view : public ranges::view_interface<single_view<T>>

Параметры шаблона

T
Тип элемента.

Просмотр характеристик

Описание следующих записей см. в разделе "Просмотр характеристик класса"

Characteristic Description
Адаптер диапазона views::single
Базовый диапазон нет
Тип элемента Указано при single_view создании
Просмотр категории итератора contiguous_range
Размер Всегда возвращает 1
Is const-iterable Да
Общий диапазон Да
Заимствуемый диапазон No

Участники

Функции-члены Description
КонструкторыC++20 Создайте single_view
beginC++20 Получите итератор в элемент.
dataC++20 Получите указатель на элемент.
endC++20 Получите sentinel в конце представления.
sizeC++20 Получение количества элементов. Всегда возвращает значение 1.
Наследуется от view_interface Description
backC++20 Получите элемент.
emptyC++20 Проверьте, является ли представление пустым (всегда возвращается false).
frontC++20 Получите элемент.
operator[]C++20 Получите элемент в указанной позиции (допустима только позиция 0).
operator boolC++20 Проверьте, не является ли представление пустым (всегда возвращается false).

Замечания

Лучший способ создания single_view — использовать views::single адаптер диапазона. Адаптеры диапазона — это способ создания классов представления. Типы представлений предоставляются в случае, если вы хотите создать собственный тип пользовательского представления.

Значение в объекте single_view можно изменить, если значение шаблона не равно const. Например: single_view<const float> sv{3.14} // this value can't be modified because it's const.

Требования

Заголовок: <ranges> (с C++20)

Пространство имен: std::ranges

Параметр компилятора: /std:c++20 или более поздней версии требуется.

Конструкторы

Создайте экземпляр single_view.

1) single_view() = default;
2) constexpr explicit single_view(const T& t);
3) constexpr explicit single_view(T&& t);
4) template<class... Args>
        requires constructible_from<T, Args...>
    constexpr single_view(in_place_t, Args&&... args);

Параметры

t
Значение элемента.

Сведения о типе параметра шаблона см. в разделе "Параметры шаблона".

Замечания

Лучший способ создания single_view — использовать views::single адаптер диапазона.

1) Создание single_view с одним элементом указанного типа, созданного по умолчанию. Например, single_view<float> sv{} создает single_view элемент с одним элементом типа float , который по умолчанию создан 0.0в .
2) Создайте single_view с одним элементом указанного типа, который инициализирован из указанного аргумента. Например, single_view<myObjectType> sv{myObject} создает single_view с одним элементом типа myObjectType , инициализируемым из аргумента.
3) Создайте single_view с одним элементом указанного типа, который инициализирован из аргумента.
4) Создание single_view с одним элементом указанного типа, инициализированного с (std::forward<Args>(args)...)помощью .

Пример: single_view.

/// requires /std:c++20 or higher
#include <ranges>
#include <iostream>
#include <string>
#include <tuple>

int main()
{
    std::ranges::single_view<int> sv{7};
    std::cout << sv.front() << " " << *sv.data() << "\n"; // 7 7

    std::ranges::single_view<std::tuple<int, std::string>> sv2{{6502, "8-bit"}};
    std::cout << std::get<0>(sv2[0]) << " " << std::get<1>(sv2[0]) << "\n"; // 6502 8-bit
}
7 7
6502 8-bit

begin

Получите указатель на один элемент в представлении.

constexpr T* begin() noexcept;
constexpr const T* begin() const noexcept;

Параметры

Нет.

Возвращаемое значение

Указатель на один элемент внутри single_view.

data

Получение указателя на один элемент в элементе single_view.

constexpr T* data() noexcept;
constexpr const T* data() const noexcept;

Параметры

Нет.

Возвращаемое значение

Указатель на элемент в элементе single_view.

end

Возвращает указатель на sentinel после элемента.

constexpr T* end() noexcept;
constexpr const T* end() const noexcept;

Параметры

Нет.

Возвращаемое значение

Указатель на sentinel, следующий за элементом.

size

Получение количества элементов в представлении. Всегда возвращает значение 1.

static constexpr size_t size() noexcept;

Параметры

Нет.

Возвращаемое значение

1

См. также

<ranges>
single адаптер диапазона
empty_view
Просмотр классов