std::ranges::views::join_with, std::ranges::join_with_view
Depuis fr.cppreference.net
| Défini dans l'en-tête <ranges>
|
||
template< ranges::input_range V, ranges::forward_range Pattern >
requires ranges::view<V> &&
ranges::input_range<ranges::range_reference_t<V>> &&
ranges::view<Pattern> &&
/*concatable*/<ranges::range_reference_t<V>, Pattern>
class join_with_view :
ranges::view_interface<join_with_view<V, Pattern>>
|
(1) | (depuis C++23) |
namespace views {
inline constexpr /* unspecified */ join_with = /* unspecified */;
}
|
(2) | (depuis C++23) |
| Signature d'appel |
||
template< ranges::viewable_range R, class Pattern >
requires /* see below */
constexpr ranges::view auto join_with( R&& r, Pattern&& pattern );
|
(depuis C++23) | |
template< class Pattern >
constexpr /* range adaptor closure */ join_with( Pattern&& pattern );
|
(depuis C++23) | |
1) Un adaptateur de plage qui représente une vue constituée de la séquence obtenue en aplatissant une vue de plages, avec chaque élément du délimiteur inséré entre les éléments de la vue. Le délimiteur peut être un seul élément ou une vue d'éléments.
Pour la définition de
/*concatable*/, voir std::ranges::concat_view.2) RangeAdaptorObject. L'expression
views::join_with(e, f) est équivalente à une expression à join_with_view(e, f) pour toutes sous-expressions appropriées e et f.join_with_view modélise input_range.
join_with_view modélise forward_range lorsque :
ranges::range_reference_t<V>est une référence, etVetranges::range_reference_t<V>modélisent chacun forward_range.
join_with_view modélise bidirectional_range lorsque :
ranges::range_reference_t<V>est une référence,V,ranges::range_reference_t<V>, etPatternmodélisent chacun bidirectional_range, etranges::range_reference_t<V>etPatternmodélisent chacun common_range.
join_with_view modélise common_range lorsque :
ranges::range_reference_t<V>est une référence, etVetranges::range_reference_t<V>modélisent chacun forward_range et common_range.
Types imbriqués
| Type | Définition |
InnerRng
|
ranges::
range_reference_t
<
V
>
( type membre d'exposition uniquement* ) |
Membres de données
| Membre | Description |
V base_
|
la vue sous-jacente (adaptée) (objet membre à titre d'exposition*) |
Pattern pattern_
|
l'objet motif (objet membre à titre d'exposition*) |
non-propagating-cache <ranges::iterator_t<V>> outer_it_ (présent uniquement si V ne modélise pas forward_range)
|
le cache de l'itérateur externe (objet membre à titre d'exposition*) |
non-propagating-cache <std::remove_cv_t<InnerRng >> inner_ (présent uniquement si std::is_reference_v<InnerRng > est false)
|
le cache de la plage interne (objet membre à titre d'exposition*) |
Fonctions membres
construit un
join_with_view
(fonction membre publique) |
|
|
renvoie une copie de la vue sous-jacente (adaptée)
(fonction membre publique) |
|
|
renvoie un itérateur vers le début
(fonction membre publique) |
|
|
renvoie un itérateur ou un sentinelle vers la fin
(fonction membre publique) |
|
Hérité de ranges::view_interface | |
| `empty` : retourne si la vue dérivée est vide, fournie uniquement si elle satisfait `sized_range` ou `forward_range` (fonction membre publique de std::ranges::view_interface<D>)
| |
| : retourne un itérateur constant vers le début de la plage (fonction membre publique de std::ranges::view_interface<D>)
| |
| : retourne un sentinelle pour l'itérateur constant de la plage (fonction membre publique de std::ranges::view_interface<D>)
| |
| `operator bool` : retourne si la vue dérivée n'est pas vide, fournie uniquement si `ranges::empty` lui est applicable (fonction membre publique de std::ranges::view_interface<D>)
| |
| `front` : retourne le premier élément de la vue dérivée, fourni si elle satisfait `forward_range` (fonction membre publique de std::ranges::view_interface<D>)
| |
| `back` : retourne le dernier élément de la vue dérivée, fourni uniquement si elle satisfait `bidirectional_range` et `common_range` (fonction membre publique de std::ranges::view_interface<D>)
| |
Guides de déduction
Classes imbriquées
|
le type d'itérateur
( classe membre de modèle d'exposition uniquement* ) |
|
|
le type de sentinelle
( classe membre de modèle d'exposition uniquement* ) |
Notes
| Macro de test de fonctionnalité | Valeur | Norme | Fonctionnalité |
|---|---|---|---|
__cpp_lib_ranges_join_with
|
202202L
|
(C++23) |
std::ranges::join_with_view
|
Exemple
Exécuter ce code
#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'; }
Sortie :
This is a test.
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 4074 | C++23 |
join_with_view
était sous-contraint
|
contraintes mises à jour |
Voir aussi
|
(C++20)
|
une
view
constituée de la séquence obtenue en aplatissant une
view
de
range
s
(modèle de classe) (objet adaptateur de gamme) |
une
view
constituée de la concaténation des vues adaptées
(modèle de classe) (objet point de personnalisation) |