#MAGICTITLESTRING# — cppreference.com
Материал из cppreference.com
<tbody> </tbody>
| Определено в заголовочном файле |
||
|
|
(1) | (начиная с C++20) |
|
|
(2) | (начиная с C++20) |
| Call signature |
||
|
|
(начиная с C++20) | |
|
|
(начиная с C++20) | |
1) split_view принимает view и разделитель, разделяя view на поддиапазоны по разделителю.
split_view моделирует концепты forward_range, и common_range когда базовый view V моделирует соответствующие концепты.
Внутренний диапазон (ranges::range_reference_t<split_view>) является ranges::subrange<ranges::iterator_t<V>>, который моделирует common_range, и sized_range когда ranges::iterator_t<V> моделирует std::sized_sentinel_for<ranges::iterator_t<V>>, и моделирует contiguous_range, random_access_range, bidirectional_range, и forward_range когда V моделирует соответствующие концепты.
Свойства
| Член класса | Определение |
view Базового типа V. (только для пояснения объект элемент of Внимание: Отображаемое название «#MAGICTITLESTRING#» переопределяет ранее заданное отображаемое название «<span style="font-size:0.7em; line-height:130%">std::ranges::</span><span style="font-size:0.7em; line-height:130%">views::</span>split, <span style="font-size:0.7em; line-height:130%">std::ranges::</span>split_view».*)
| |
Объект шаблона, который используется в качестве разделителя для разделения базового объекта view. (только для пояснения объект элемент*) | |
optional-like объект типа /*non-propagating-cache*/<ranges::subrange<ranges::iterator_t<V>>> который сохраняет результат первого вызова к begin(). (только для пояснения объект элемент*) | |
Методы
(C++20) |
создает split_view (public функция-элемент) [править] |
(C++20) |
возвращает копию основного (адаптированного) представления (public функция-элемент) [править] |
(C++20) |
возвращает итератор на начало (public функция-элемент) [править] |
(C++20) |
возвращает итератор или охранное выражение указывающее на конец (public функция-элемент) [править] |
(C++20) |
searches for the next occurrence of the pattern (функция-элемент только для пояснения) |
Унаследовано от ranges::view_interface | |
(C++20) |
возвращает является ли производное представление пустым. При условии, если это удовлетворяет sized_range или forward_range. (public функция-элемент std::ranges::view_interface<D>) [править]
|
(C++23) |
возвращает константный итератор в начале диапазона. (public функция-элемент std::ranges::view_interface<D>) [править]
|
(C++23) |
возвращает охранное выражение для константного итератора диапазона. (public функция-элемент std::ranges::view_interface<D>) [править]
|
(C++20) |
возвращает, не является ли производное представление пустым. Существует, если ranges::empty применимо к нему. (public функция-элемент std::ranges::view_interface<D>) [править]
|
(C++20) |
возвращает первый элемент в производном представлении. При условии, если оно удовлетворяет forward_range. (public функция-элемент std::ranges::view_interface<D>) [править]
|
Вложенные классы
| класс итератора (класс-элемент только для пояснения) | |
| класс охранного выражения (класс-элемент только для пояснения) |
Deduction guides
Заметки
До P2210R2, split_view использовал ленивый механизм для разделения, и поэтому не мог поддерживать двунаправленные, случайные или последовательные свойства базового представления. В результате он был переработан P2210R2, и ленивый механизм переместился в lazy_split_view.
Пример
#include <iomanip> #include <iostream> #include <ranges> #include <string_view> int main() { using std::operator""sv; constexpr auto words{"Hello^_^C++^_^20^_^!"sv}; constexpr auto delim{"^_^"sv}; for (const auto word : std::views::split(words, delim)) // with string_view's C++23 range constructor: std::cout << std::quoted(std::string_view(word)) << ' '; std::cout << '\n'; }
Вывод:
Сообщения об ошибках
Следующие изменения поведения были применены с обратной силой к ранее опубликованным стандартам C++:
| Номер | Применён | Поведение в стандарте | Корректное поведение |
|---|---|---|---|
| WG не указан | C++20 | the old split_view был слишком ленив, чтобы его можно было легко использовать
|
был переработан |