take_view
class (стандартная библиотека C++)
Представление первых N-элементов из другого представления.
Синтаксис
template<view V>
class take_view : public view_interface<take_view<V>>;
Параметры шаблона
V
Тип базового диапазона.
Просмотр характеристик
Описание следующих записей см. в разделе "Просмотр характеристик класса"
Characteristic | Description |
---|---|
Адаптер диапазона | views::take |
Базовый диапазон | Любой диапазон |
Тип элемента | Совпадает с базовым диапазоном |
Просмотр категории итератора | Совпадает с базовым диапазоном |
Размер | No |
Is const -iterable |
Только в том случае, если базовый диапазон является const итерируемым |
Общий диапазон | Только если базовый диапазон удовлетворяет random_access_range и sized_range |
Заимствуемый диапазон | Только в том случае, если базовый диапазон имеет значение borrowed_range |
Участники
Функции-члены | Description |
---|---|
Конструкторы | Создайте представление. |
base C++20 |
Получение базового диапазона. |
begin C++20 |
Получите итератор к первому элементу. |
end C++20 |
Получите sentinel в конце представления. |
size C++20 |
Получение количества элементов. Базовый диапазон должен удовлетворять sized_range . |
Наследуется от view_interface |
Description |
back C++20 |
Получите последний элемент. |
data C++20 |
Получите указатель на первый элемент. |
empty C++20 |
Проверьте, является ли представление пустым. |
front C++20 |
Получите первый элемент. |
operator[] C++20 |
Получите элемент в указанной позиции. |
operator bool C++20 |
Проверьте, не является ли представление пустым. |
Требования
Заголовок: <ranges>
(с C++20)
Пространство имен: std::ranges
Параметр компилятора: /std:c++20
или более поздней версии требуется.
Конструкторы
Создание экземпляра объекта take_view
1) take_view() requires default_initializable<V> = default;
2) constexpr take_view(V base, range_difference_t<V> count);
Параметры
base
Базовое представление.
count
Количество элементов, которые нужно взять с передней части базового представления. Если count
в базовом представлении больше числа элементов, представление будет содержать все элементы в базовом диапазоне.
Сведения о типе параметра шаблона см. в разделе "Параметры шаблона".
Возвращаемое значение
— take_view
представление первых N-элементов из другого представления. Если указать больше элементов, которые нужно удалить, чем существует в базовом диапазоне, empty_view
возвращается.
Замечания
Лучший способ создания take_view
— использовать views::take
адаптер диапазона. Адаптеры диапазона — это способ создания классов представления. Типы представлений предоставляются только в том случае, если вы хотите создать собственный тип пользовательского представления.
1) Создание элемента take_view
без элементов. Базовое представление создается по умолчанию. base()
возвращает копию V()
.
2) Создание из take_view
base
числа и числа. base
перемещается через std::move()
.
Если count
число элементов в базовом диапазоне меньше, определяет count
размер элемента take_view
.
Если count
число элементов в базовом диапазоне больше, то take_view
включает все элементы в базовом диапазоне.
Пример: take_view
// requires /std:c++20 or later
#include <ranges>
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v{0, 1, 2, 3, 4, 5, 6};
auto newView = std::views::take(v, 3);
for (auto& e : newView)
{
std::cout << e << ' '; // 0 1 2
}
std::cout << '\n';
// Use the '|' operator to create a take_view
for (auto i : v | std::views::take(3))
{
std::cout << i << ' '; // 0 1 2
}
}
0 1 2
0 1 2
base
Получает копию базового представления.
// Uses a copy constructor to return the underlying view
1) constexpr V base() const & requires std::copy_constructible<V>;
// Uses a move constructor to return the underlying view
2) constexpr V base() &&;
Параметры
Нет.
Возвращаемое значение
Базовое представление.
begin
Получите итератор к первому элементу в представлении.
constexpr auto begin() requires (!Simple_view<V>);
constexpr auto begin() const requires range<const V>;
Параметры
Нет.
Возвращаемое значение
Итератор, указывающий на первый элемент в представлении.
Замечания
Для 1 требование означает, Simple_view<V>
что представление V
и const V
должно иметь одинаковые итераторы и типы sentinel.
end
Получите sentinel в конце представления.
1) constexpr auto end() requires !(Simple_view<V>);
2) constexpr auto end() const requires range<const V>;
Параметры
Нет.
Возвращаемое значение
Sentinel, следующий за последним элементом в представлении.
Замечания
Для 1 требование означает, Simple_view<V>
что представление V
и const V
должно иметь одинаковые итераторы и типы sentinel.
size
Получение количества элементов.
constexpr auto size() requires sized_range<V>;
constexpr auto size() const requires sized_range<const V>;
Параметры
Нет.
Возвращаемое значение
Число элементов в массиве take_view
.
Если он take_view
был создан явным count
образом:
- Если
count
значение меньше числа элементов в базовом диапазоне, оно возвращается в качестве размера представления. - Значение , если
count
больше числа элементов в базовом диапазоне, то размер представления равенranges::size(base)
.