Namespaces
Variants

std:: iter_move (std::reverse_iterator)

From cppreference.net
Iterator library
Iterator concepts
Iterator primitives
Algorithm concepts and utilities
Indirect callable concepts
Common algorithm requirements
(C++20)
(C++20)
(C++20)
Utilities
(C++20)
Iterator adaptors
Range access
(C++11) (C++14)
(C++14) (C++14)
(C++11) (C++14)
(C++14) (C++14)
(C++17) (C++20)
(C++17)
(C++17)
friend constexpr std:: iter_rvalue_reference_t < Iter >
iter_move ( const std:: reverse_iterator & i ) noexcept ( /* voir ci-dessous */ ) ;
(depuis C++20)

Convertit le résultat de la déréférence de l'itérateur sous-jacent ajusté en son type de référence rvalue associé.

Équivalent à auto tmp = i. base ( ) ;
return std :: ranges:: iter_move ( -- tmp ) ;
.

Ce modèle de fonction n'est pas visible par la recherche non qualifiée ou qualifiée ordinaire, et ne peut être trouvé que par la recherche dépendante des arguments lorsque std:: reverse_iterator < Iter > est une classe associée des arguments.

Table des matières

Paramètres

i - un itérateur inverse source

Valeur de retour

Une référence rvalue ou un temporaire prvalue.

Complexité

Constante.

Exceptions

noexcept spécification :
noexcept (

std:: is_nothrow_copy_constructible_v < Iter > &&
noexcept ( std :: ranges:: iter_move ( -- std:: declval < Iter & > ( ) ) )

)

Exemple

#include <iomanip>
#include <iostream>
#include <iterator>
#include <string>
#include <vector>
void print(const auto& rem, const auto& v)
{
    std::cout << rem << '[' << size(v) << "] {";
    for (char comma[]{0, 0}; const auto& s : v)
        std::cout << comma << ' ' << std::quoted(s), comma[0] = ',';
    std::cout << " }\n";
}
int main()
{
    std::vector<std::string> p{"Alpha", "Bravo", "Charlie"}, q;
    print("p", p), print("q", q);
    using RI = std::reverse_iterator<std::vector<std::string>::iterator>;
    for (RI iter{p.rbegin()}, rend{p.rend()}; iter != rend; ++iter)
        q.emplace_back(/* ADL */ iter_move(iter));
    print("p", p), print("q", q);
}

Sortie possible :

p[3] { "Alpha", "Bravo", "Charlie" }
q[0] { }
p[3] { "", "", "" }
q[3] { "Charlie", "Bravo", "Alpha" }

Voir aussi

(C++20)
convertit le résultat du déréférencement d'un objet en sa référence rvalue associée
(objet de point de personnalisation)
(C++20)
convertit le résultat du déréférencement de l'itérateur sous-jacent en sa référence rvalue associée
(fonction)
(C++11)
convertit l'argument en xvalue
(modèle de fonction)
convertit l'argument en xvalue si le constructeur de déplacement ne lève pas d'exception
(modèle de fonction)
(C++11)
transmet un argument de fonction et utilise l'argument de modèle de type pour préserver sa catégorie de valeur
(modèle de fonction)
déplace une plage d'éléments vers un nouvel emplacement
(objet fonction algorithme)
déplace une plage d'éléments vers un nouvel emplacement dans l'ordre inverse
(objet fonction algorithme)