Skip to main content

std::forward_list insert_after() method

// (1) Non const version only
iterator insert( const_iterator pos, const T& value );

// (2) Non const version only
iterator insert( const_iterator pos, T&& value );

// (3) Non const version only
iterator insert( const_iterator pos, size_type count, const T& value );

// (4) Non const version only
template< class InputIt >
iterator insert( const_iterator pos, InputIt first, InputIt last );

// (5) Non const version only
iterator insert( const_iterator pos, std::initializer_list<T> ilist );

Inserts elements after the specified location in the container.

  • (1-2) Inserts value before pos.
  • (3) Inserts count copies of the value after the element pointed to by pos.
  • (4) Inserts elements from range [ first, last ) after the element pointed to by pos.
    Undefined Behavior

    The behavior is undefined if first and last are iterators into *this.

  • (5) Inserts elements from initializer list ilist.

Parameters

  • pos - iterator after which the content will be inserted
  • value - element value to insert
  • count - number of elements to insert
  • first, last - the range of elements to insert
  • ilist - initializer list to insert the values from

Type requirements

Return value

  • (1-2) Iterator to the inserted value.
  • (3) Iterator to the last element inserted, or pos if count == 0.
  • (4) Iterator to the last element inserted, or pos if first == last.
  • (5) Iterator to the last element inserted, or pos if ilist is empty.

Complexity

  • (1-2) Constant - O(1).
  • (3) Linear in count - O(count).
  • (4) Linear in std::distance(first, last) - O(std::distance(first, last)).
  • (5) Linear in ilist.size() - O(ilist.size()).

Exceptions

If an exception is thrown by any operation, the are no effect (strong exception guarantee).

Example

Main.cpp
#include <forward_list>
#include <string>
#include <iostream>
#include <vector>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
s.put('[');
char comma[3] = {'\0', ' ', '\0'};
for (const auto& e : v) {
s << comma << e;
comma[0] = ',';
}
return s << ']';
}

int main()
{
std::forward_list<std::string> words {"the", "frogurt", "is", "also", "cursed"};
std::cout << "words: " << words << '\n';

// insert_after (2)
auto beginIt = words.begin();
words.insert_after(beginIt, "strawberry");
std::cout << "words: " << words << '\n';

// insert_after (3)
auto anotherIt = beginIt;
++anotherIt;
anotherIt = words.insert_after(anotherIt, 2, "strawberry");
std::cout << "words: " << words << '\n';

// insert_after (4)
std::vector<std::string> V = { "apple", "banana", "cherry"};
anotherIt = words.insert_after(anotherIt, V.begin(), V.end());
std::cout << "words: " << words << '\n';

// insert_after (5)
words.insert_after(anotherIt, {"jackfruit", "kiwifruit", "lime", "mango"});
std::cout << "words: " << words << '\n';
}
Output
words: [the, frogurt, is, also, cursed]
words: [the, strawberry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, apple, banana, cherry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, apple, banana, cherry, jackfruit, kiwifruit, lime, mango, frogurt, is, also, cursed]
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.

std::forward_list insert_after() method

// (1) Non const version only
iterator insert( const_iterator pos, const T& value );

// (2) Non const version only
iterator insert( const_iterator pos, T&& value );

// (3) Non const version only
iterator insert( const_iterator pos, size_type count, const T& value );

// (4) Non const version only
template< class InputIt >
iterator insert( const_iterator pos, InputIt first, InputIt last );

// (5) Non const version only
iterator insert( const_iterator pos, std::initializer_list<T> ilist );

Inserts elements after the specified location in the container.

  • (1-2) Inserts value before pos.
  • (3) Inserts count copies of the value after the element pointed to by pos.
  • (4) Inserts elements from range [ first, last ) after the element pointed to by pos.
    Undefined Behavior

    The behavior is undefined if first and last are iterators into *this.

  • (5) Inserts elements from initializer list ilist.

Parameters

  • pos - iterator after which the content will be inserted
  • value - element value to insert
  • count - number of elements to insert
  • first, last - the range of elements to insert
  • ilist - initializer list to insert the values from

Type requirements

Return value

  • (1-2) Iterator to the inserted value.
  • (3) Iterator to the last element inserted, or pos if count == 0.
  • (4) Iterator to the last element inserted, or pos if first == last.
  • (5) Iterator to the last element inserted, or pos if ilist is empty.

Complexity

  • (1-2) Constant - O(1).
  • (3) Linear in count - O(count).
  • (4) Linear in std::distance(first, last) - O(std::distance(first, last)).
  • (5) Linear in ilist.size() - O(ilist.size()).

Exceptions

If an exception is thrown by any operation, the are no effect (strong exception guarantee).

Example

Main.cpp
#include <forward_list>
#include <string>
#include <iostream>
#include <vector>

template<typename T>
std::ostream& operator<<(std::ostream& s, const std::forward_list<T>& v) {
s.put('[');
char comma[3] = {'\0', ' ', '\0'};
for (const auto& e : v) {
s << comma << e;
comma[0] = ',';
}
return s << ']';
}

int main()
{
std::forward_list<std::string> words {"the", "frogurt", "is", "also", "cursed"};
std::cout << "words: " << words << '\n';

// insert_after (2)
auto beginIt = words.begin();
words.insert_after(beginIt, "strawberry");
std::cout << "words: " << words << '\n';

// insert_after (3)
auto anotherIt = beginIt;
++anotherIt;
anotherIt = words.insert_after(anotherIt, 2, "strawberry");
std::cout << "words: " << words << '\n';

// insert_after (4)
std::vector<std::string> V = { "apple", "banana", "cherry"};
anotherIt = words.insert_after(anotherIt, V.begin(), V.end());
std::cout << "words: " << words << '\n';

// insert_after (5)
words.insert_after(anotherIt, {"jackfruit", "kiwifruit", "lime", "mango"});
std::cout << "words: " << words << '\n';
}
Output
words: [the, frogurt, is, also, cursed]
words: [the, strawberry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, apple, banana, cherry, frogurt, is, also, cursed]
words: [the, strawberry, strawberry, strawberry, apple, banana, cherry, jackfruit, kiwifruit, lime, mango, frogurt, is, also, cursed]
This article originates from this CppReference page. It was likely altered for improvements or editors' preference. Click "Edit this page" to see all changes made to this document.
Hover to see the original license.