std::forward_list insert_after() method
- od 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
valuebeforepos. - (3) Inserts count copies of the
valueafter 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
firstandlastare 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) -
InputItmust meet the requirements ofLegacyInputIterator.
Return value
- (1-2) Iterator to the inserted value.
- (3) Iterator to the last element inserted, or
posifcount == 0. - (4) Iterator to the last element inserted, or
posiffirst == last. - (5) Iterator to the last element inserted, or
posifilistis 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.