std::list<T,Allocator>::splice
| void splice( const_iterator pos, list& other ); |
(1) | |
| void splice( const_iterator pos, list&& other ); |
(1) | (since C++11) |
| void splice( const_iterator pos, list& other, const_iterator it ); |
(2) | |
| void splice( const_iterator pos, list&& other, const_iterator it ); |
(2) | (since C++11) |
| void splice( const_iterator pos, list& other, const_iterator first, const_iterator last); |
(3) | |
| void splice( const_iterator pos, list&& other, const_iterator first, const_iterator last ); |
(3) | (since C++11) |
Transfers elements from one list to another.
No elements are copied or moved, only the internal pointers of the list nodes are re-pointed. The behavior is undefined if: get_allocator() != other.get_allocator(). No iterators or references become invalidated, the iterators to moved elements remain valid, but now refer into *this, not into other.
other into *this. The elements are inserted before the element pointed to by pos. The container other becomes empty after the operation. The behavior is undefined if other refers to the same object as *this.it from other into *this. The element is inserted before the element pointed to by pos.[first, last) from other into *this. The elements are inserted before the element pointed to by pos. The behavior is undefined if pos is an iterator in the range [first,last).Contents |
[edit] Parameters
| pos | - | element before which the content will be inserted |
| other | - | another container to transfer the content from |
| it | - | the element to transfer from other to *this
|
| first, last | - | the range of elements to transfer from other to *this
|
[edit] Return value
(none)
[edit] Exceptions
Throws nothing.
[edit] Complexity
1-2) Constant.
3) Constant if other refers to the same object as *this, otherwise linear in std::distance(first, last).
[edit] Example
#include <iostream> #include <list> std::ostream& operator<<(std::ostream& ostr, const std::list<int>& list) { for (auto &i : list) { ostr << " " << i; } return ostr; } int main () { std::list<int> list1 = { 1, 2, 3, 4, 5 }; std::list<int> list2 = { 10, 20, 30, 40, 50 }; auto it = list1.begin(); std::advance(it, 2); list1.splice(it, list2); std::cout << "list1: " << list1 << "\n"; std::cout << "list2: " << list2 << "\n"; list2.splice(list2.begin(), list1, it, list1.end()); std::cout << "list1: " << list1 << "\n"; std::cout << "list2: " << list2 << "\n"; }
Output:
list1: 1 2 10 20 30 40 50 3 4 5 list2: list1: 1 2 10 20 30 40 50 list2: 3 4 5
[edit] See also
| merges two sorted lists (public member function) | |
| removes elements satisfying specific criteria (public member function) |

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
