Namespaces
Variants

std::forward_list<T,Allocator>:: emplace_after

From cppreference.net
template < class ... Args >
iterator emplace_after ( const_iterator pos, Args && ... args ) ;
(depuis C++11)
(constexpr depuis C++26)

Insère un nouvel élément à une position après la position spécifiée dans le conteneur. L'élément est construit sur place, c'est-à-dire qu'aucune opération de copie ou de déplacement n'est effectuée. Le constructeur de l'élément est appelé avec exactement les mêmes arguments que ceux fournis à la fonction.

Si l'une des conditions suivantes est satisfaite, le comportement est indéfini :

Aucun itérateur ou référence n'est invalidé.

Table des matières

Paramètres

pos - itérateur après lequel le nouvel élément sera construit
args - arguments à transmettre au constructeur de l'élément

Valeur de retour

Itérateur vers le nouvel élément.

Complexité

Constante.

Exceptions

Si une exception est levée pour quelque raison que ce soit, cette fonction n'a aucun effet ( garantie forte de sûreté face aux exceptions ).

Exemple

L'exemple démontre un remplissage canonique d'une liste simplement chaînée dans l'ordre naturel (par opposition à l'ordre inverse).

#include <forward_list>
#include <iostream>
#include <string>
struct Sum
{
    std::string remark;
    int sum;
    Sum(std::string remark, int sum)
        : remark{std::move(remark)}, sum{sum} {}
    void print() const
    {
        std::cout << remark << " = " << sum << '\n';
    }
};
int main()
{
    std::forward_list<Sum> list;
    auto iter = list.before_begin();
    std::string str{"1"};
    for (int i{1}, sum{1}; i != 10; sum += i)
    {
        iter = list.emplace_after(iter, str, sum);
        ++i;
        str += " + " + std::to_string(i);
    }
    for (const Sum& s : list)
        s.print();
}

Sortie :

1 = 1
1 + 2 = 3
1 + 2 + 3 = 6
1 + 2 + 3 + 4 = 10
1 + 2 + 3 + 4 + 5 = 15
1 + 2 + 3 + 4 + 5 + 6 = 21
1 + 2 + 3 + 4 + 5 + 6 + 7 = 28
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 = 36
1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 = 45

Voir aussi

insère des éléments après un élément
(fonction membre publique)