std::forward_list insert_after() method
- since C++11
// (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
beforepos
. - (3) Inserts count copies of the
value
after the element pointed to bypos
. - (4) Inserts elements from range [ first, last ) after the element pointed to by pos.
Undefined Behavior
The behavior is undefined if
first
andlast
are iterators into*this
. - (5) Inserts elements from initializer list
ilist
.
Parameters
pos
- iterator after which the content will be insertedvalue
- element value to insertcount
- number of elements to insertfirst
,last
- the range of elements to insertilist
- initializer list to insert the values from
Type requirements
- (4) -
InputIt
must meet the requirements ofLegacyInputIterator
.
Return value
- (1-2) Iterator to the inserted value.
- (3) Iterator to the last element inserted, or
pos
ifcount == 0
. - (4) Iterator to the last element inserted, or
pos
iffirst == last
. - (5) Iterator to the last element inserted, or
pos
ifilist
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.
Hover to see the original license.