Namespaces
Variants

std::ranges:: views:: join_with, std::ranges:: join_with_view

From cppreference.net
Ranges library
Range adaptors
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 /* non spécifié */ join_with = /* non spécifié */ ;

}
(2) (depuis C++23)
Signature d'appel
template < ranges:: viewable_range R, class Pattern >

requires /* voir ci-dessous */

constexpr ranges:: view auto join_with ( R && r, Pattern && pattern ) ;
(depuis C++23)
template < class Pattern >
constexpr /* adaptateur de plage de fermeture */ join_with ( Pattern && pattern ) ;
(depuis C++23)
1) Un adaptateur de gamme qui représente view constitué de la séquence obtenue en aplatissant une vue de gammes, avec chaque élément du délimiteur inséré entre les éléments de la vue. Le délimiteur peut être un élément unique 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 en 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 :

join_with_view modélise bidirectional_range lorsque :

join_with_view modélise common_range lorsque :

Table des matières

Types imbriqués

Type Définition
InnerRng ranges:: range_reference_t < V >
( type membre d'exposition uniquement* )

Membres de données

Membre Définition
V base_ la vue sous-jacente (adaptée)
( objet membre d'exposition uniquement* )
Pattern pattern_ l'objet pattern
( objet membre d'exposition uniquement* )
non-propagating-cache  < ranges:: iterator_t < V >> outer_it_
(présent seulement si V ne modélise pas forward_range )
le cache de l'itérateur externe
( objet membre d'exposition uniquement* )
non-propagating-cache  < std:: remove_cv_t < InnerRng  >> inner_
(présent seulement si std:: is_reference_v < InnerRng  > est false )
le cache de la plage interne
( objet membre d'exposition uniquement* )

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 std::ranges::view_interface
indique si la vue dérivée est vide, fourni uniquement si elle satisfait sized_range ou forward_range
(fonction membre publique de std::ranges::view_interface<D> )
(C++23)
renvoie un itérateur constant vers le début de la plage
(fonction membre publique de std::ranges::view_interface<D> )
(C++23)
renvoie un sentinelle pour l'itérateur constant de la plage
(fonction membre publique de std::ranges::view_interface<D> )
indique si la vue dérivée n'est pas vide, fourni uniquement si ranges::empty lui est applicable
(fonction membre publique de std::ranges::view_interface<D> )
renvoie 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> )
renvoie 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

#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

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)