Namensräume
Varianten
Aktionen

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

Von cppreference.com
 
 
 
 
iterator insert_after( const_iterator pos, const T& value );
(1) (seit C++11)
iterator insert_after( const_iterator pos, T&& value );
(2) (seit C++11)
iterator insert_after( const_iterator pos, size_type count, const T& value );
(3) (seit C++11)
template< class InputIt >
iterator insert_after( const_iterator pos, InputIt first, InputIt last );
(4) (seit C++11)
iterator insert_after( const_iterator pos, std::initializer_list<T> ilist );
(5) (seit C++11)

Fügt Elemente nach der angegebenen Position in den Container ein.

1,2) Fügt value nach dem Element ein, auf das pos zeigt.
3) Fügt count Kopien von value nach dem Element ein, auf das pos zeigt.
4) Fügt Elemente aus dem Bereich [firstlast) nach dem Element ein, auf das pos zeigt. Das Verhalten ist undefiniert, wenn first und last Iteratoren auf *this sind.
5) Fügt Elemente aus der Initialisierungsliste ilist ein.

Keine Iteratoren oder Referenzen werden ungültig.

Inhalt

[bearbeiten] Parameter

pos - Iterator, nach dem der Inhalt eingefügt werden soll
value - Elementwert, der eingefügt werden soll
zählt - Anzahl der einzufügenden Kopien
first, last - das Iteratorenpaar, das den Quell- Bereich der einzufügenden Elemente definiert
ilist - Initialisierungsliste, aus der die Werte eingefügt werden sollen
Typanforderungen
-
InputIt muss die Anforderungen von LegacyInputIterator erfüllen.

[bearbeiten] Rückgabewert

1,2) Iterator auf das eingefügte Element.
3) Iterator auf das zuletzt eingefügte Element oder pos, wenn count == 0.
4) Iterator auf das zuletzt eingefügte Element oder pos, wenn first == last.
5) Iterator auf das zuletzt eingefügte Element oder pos, wenn ilist leer ist.

[bearbeiten] Ausnahmen

Wenn aus irgendeinem Grund eine Ausnahme ausgelöst wird, haben diese Funktionen keine Auswirkungen (starke Ausnahme-Sicherheitsgarantie).

[bearbeiten] Komplexität

1,2) Konstant.
3) Linear bezüglich count.
4) Linear bezüglich std::distance(first, last).
5) Linear bezüglich ilist.size().

[bearbeiten] Beispiel

#include <forward_list>
#include <iostream>
#include <string>
#include <vector>
 
void print(const std::forward_list<int>& list)
{
    std::cout << "list: {";
    for (char comma[3] = {'\0', ' ', '\0'}; int i : list)
    {
        std::cout << comma << i;
        comma[0] = ',';
    }
    std::cout << "}\n";
}
 
int main()
{
    std::forward_list<int> ints{1, 2, 3, 4, 5};
    print(ints);
 
    // insert_after (2)
    auto beginIt = ints.begin();
    ints.insert_after(beginIt, -6);
    print(ints);
 
    // insert_after (3)
    auto anotherIt = beginIt;
    ++anotherIt;
    anotherIt = ints.insert_after(anotherIt, 2, -7);
    print(ints);
 
    // insert_after (4)
    const std::vector<int> v = {-8, -9, -10};
    anotherIt = ints.insert_after(anotherIt, v.cbegin(), v.cend());
    print(ints);
 
    // insert_after (5)
    ints.insert_after(anotherIt, {-11, -12, -13, -14});
    print(ints);
}

Ausgabe

list: {1, 2, 3, 4, 5}
list: {1, -6, 2, 3, 4, 5}
list: {1, -6, -7, -7, 2, 3, 4, 5}
list: {1, -6, -7, -7, -8, -9, -10, 2, 3, 4, 5}
list: {1, -6, -7, -7, -8, -9, -10, -11, -12, -13, -14, 2, 3, 4, 5}

[bearbeiten] Siehe auch

konstruiert Elemente in-place nach einem Element
(öffentliche Memberfunktion) [bearbeiten]
fügt ein Element am Anfang ein
(public member function) [edit]