(C++17) | ||||
| Sequence | ||||
(C++11) | ||||
(C++26) | ||||
(C++26) | ||||
(C++11) | ||||
| Associative | ||||
| Unordered associative | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
(C++11) | ||||
| Adaptors | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
(C++23) | ||||
| Views | ||||
(C++20) | ||||
(C++23) | ||||
| Tables | ||||
| Iterator invalidation | ||||
| Member function table | ||||
| Non-member function table |
| Member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Non-member functions | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Deduction guides(C++17) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
void splice( const_iterator pos, list& other); | (1) | (constexpr since C++26) |
void splice( const_iterator pos, list&& other); | (2) | (since C++11) (constexpr since C++26) |
void splice( const_iterator pos, list& other, const_iterator it); | (3) | (constexpr since C++26) |
void splice( const_iterator pos, list&& other, const_iterator it); | (4) | (since C++11) (constexpr since C++26) |
void splice( const_iterator pos, list& other, const_iterator first, const_iterator last); | (5) | (constexpr since C++26) |
void splice( const_iterator pos, list&& other, const_iterator first, const_iterator last); | (6) | (since C++11) (constexpr since C++26) |
Transfers elements fromother to*this. The elements are inserted atpos.
If any of the following conditions is satisfied, the behavior is undefined:
[begin(), end()).[begin(), end()), the behavior is undefined.[first, last).[first, last) is not avalid range inother,[first, last) is not dereferenceable.[first, last).No iterators or references become invalidated. If*this andother refer to different objects, the iterators to the transferred elements now refer into*this, not intoother.
Contents |
| pos | - | element before which the content will be inserted |
| other | - | another container to transfer the content from |
| it | - | the element to transfer fromother to*this |
| first, last | - | the pair of iterators defining therange of elements to transfer fromother to*this |
#include <iostream>#include <list> std::ostream& operator<<(std::ostream& ostr,conststd::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 5list2:list1: 1 2 10 20 30 40 50list2: 3 4 5
The following behavior-changing defect reports were applied retroactively to previously published C++ standards.
| DR | Applied to | Behavior as published | Correct behavior |
|---|---|---|---|
| LWG 250 | C++98 | references and iterators to the moved element(s) were all invalidated | they refer or point to the same element(s) in*this |
| N2525 | C++98 | O(1) splicing could not be guaranteed if get_allocator()!= other.get_allocator() | the behavior is undefined in this case |
| merges two sorted lists (public member function)[edit] | |
| removes elements satisfying specific criteria (public member function)[edit] |