std::ranges:: views:: join_with, std::ranges:: join_with_view
|
Défini dans l'en-tête
<ranges>
|
||
|
template
<
ranges::
input_range
V,
ranges::
forward_range
Pattern
>
requires
ranges::
view
<
V
>
&&
|
(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 */
|
(depuis C++23) | |
|
template
<
class
Pattern
>
constexpr /* adaptateur de plage de fermeture */ join_with ( Pattern && pattern ) ; |
(depuis C++23) | |
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.
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, et
-
Vet ranges:: range_reference_t < V > modélisent chacunforward_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èlent chacunbidirectional_range, et -
ranges::
range_reference_t
<
V
>
et
Patternmodèlent chacuncommon_range.
join_with_view
modélise
common_range
lorsque :
- ranges:: range_reference_t < V > est une référence, et
-
Vet ranges:: range_reference_t < V > modélisent chacunforward_rangeetcommon_range.
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
|
(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) |