std::ranges::views::join_with, std::ranges::join_with_view
Определено в заголовке <ranges> | ||
|---|---|---|
template< ranges::input_range V, ranges::forward_range Pattern >
requires ranges::view<V> and
ranges::input_range<ranges::range_reference_t<V>> and
ranges::view<Pattern> and
/* ranges::range_reference_t<V> and Pattern
have compatible elements (see below) */
class join_with_view
: ranges::view_interface<join_with_view<V, Pattern>>
| (1) | (с C++23) |
namespace views {
inline constexpr /* unspecified */ join_with = /* unspecified */;
}
| (2) | (с C++23) |
| Подпись вызова | ||
template< ranges::viewable_range R, class Pattern >
requires /* see below */
constexpr ranges::view auto join_with( R&& r, Pattern&& pattern );
| (с C++23) | |
template< class Pattern > constexpr /* range adaptor closure */ join_with( Pattern&& pattern ); | (с C++23) |
1) Адаптер диапазонов, представляющий
view, состоящий из последовательности, полученной путем сглаживания представления диапазонов, с вставкой каждого элемента разделителя между элементами представления. Разделитель может быть единственным элементом или представлением элементов.
2) RangeAdaptorObject. Выражение
views::join_with(e, f) эквивалентно выражению join_with_view(e, f) для любых подходящих подвыражений e и f. ranges::range_reference_t<V> и Pattern совместимы по элементам, если все из следующих концепций реализованы:
-
std::common_with<ranges::range_value_t<ranges::range_reference_t<V>>,
ranges::range_value_t<Pattern>> -
std::common_reference_with<ranges::range_reference_t<ranges::range_reference_t<V>>,
ranges::range_reference_t<Pattern>> -
std::common_reference_with<ranges::range_rvalue_reference_t<ranges::range_reference_t<V>>,
ranges::range_rvalue_reference_t<Pattern>>
join_with_view реализует input_range.
join_with_view реализует forward_range когда:
- ranges::range_reference_t<V> является ссылкой, и
-
Vи ranges::range_reference_t<V> реализуютforward_range.
join_with_view реализует bidirectional_range когда:
- ranges::range_reference_t<V> является ссылкой,
-
V, ranges::range_reference_t<V>, иPatternреализуютbidirectional_range, и - ranges::range_reference_t<V> и
Patternреализуютcommon_range.
join_with_view реализует common_range когда:
- ranges::range_reference_t<V> является ссылкой, и
-
Vи ranges::range_reference_t<V> реализуютforward_rangeиcommon_range.
Члены-функции
|
(C++23) | создает join_with_view (публичная функция-член) |
|
(C++23) | возвращает копию базового (адаптированного) представления (публичная функция-член) |
|
(C++23) | возвращает итератор начала (публичная функция-член) |
|
(C++23) | возвращает итератор или ограничивающий итератор конца (публичная функция-член) |
Унаследованное от |
|
|
(C++20) | возвращает, является ли производное представление пустым. Предоставляется, если оно удовлетворяет sized_range или forward_range. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++23) | возвращает постоянный итератор начала диапазона. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++23) | возвращает ограничивающий итератор конца диапазона. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++20) | возвращает, не пусто ли производное представление. Предоставляется, если ranges::empty применимо к нему. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++20) | возвращает первый элемент производного представления. Предоставляется, если оно удовлетворяет forward_range. (публичная функция-член std::ranges::view_interface<D>) |
|
(C++20) | возвращает последний элемент производного представления. Предоставляется, если оно удовлетворяет bidirectional_range и common_range. (публичная функция-член std::ranges::view_interface<D>) |
Руководства по выводу
Вложенные классы
|
(C++23) | тип итератора (член-шаблон класса exposition-only*) |
|
(C++23) | тип ограничителя (член-шаблон класса exposition-only*) |
Пример
#include <iostream>
#include <ranges>
#include <string_view>
#include <vector>
int main()
{
using namespace std::literals;
std::vector v{"This"sv, "is"sv, "a"sv, "test."sv};
auto joined = v | std::views::join_with(' ');
for (auto c : joined)
std::cout << c;
std::cout << '\n';
}Вывод:
This is a test.
См. также
|
(C++20) | a view consisting of the sequence obtained from flattening a view of ranges(шаблон класса) (объект адаптера диапазонов) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/cpp/ranges/join_with_view