forward_list::splice_after
从源 forward_list 中删除元素并将其插入到目标 forward_list 中。
// insert the entire source forward_list void splice_after( const_iterator Where, forward_list& Source ); void splice_after( const_iterator Where, forward_list&& Source ); // insert one element of the source forward_list void splice_after( const_iterator Where, forward_list& Source, const_iterator Iter ); void splice_after( const_iterator Where, forward_list&& Source, const_iterator Iter ); // insert a range of elements from the source forward_list void splice_after( const_iterator Where, forward_list& Source, const_iterator First, const_iterator Last ); void splice_after( const_iterator Where, forward_list&& Source, const_iterator First, const_iterator Last );
参数
Where
目标 forward_list 中要在其后面进行插入的位置。Source
要插入目标 forward_list 中的源 forward_list。Iter
要从源 forward_list 中进行插入的元素。First
要从源 forward_list 中进行插入的范围中的第一个元素。Last
要从源 forward_list 中进行插入的范围之外的第一个位置。
备注
第一对成员函数将由 Source 控制的序列正好插入 Where 所指向的控制序列中的元素之后。 它还会删除 Source 中的所有元素。 (&Source 不得等于 this。)
第二对成员函数删除由 Source 控制的序列中正好位于 Iter 之后的元素,并将其正好插入到 Where 所指向的控制序列中的元素之后。 (如果 Where == Iter || Where == ++Iter,则不会发生更改。)
第三对成员函数(范围接合)将由 Source 控制的序列中的 (First, Last) 指定的子范围正好插入 Where 所指向的控制序列中的元素之后。 它还会删除由 Source 控制的序列中的原始子范围。 (如果 &Source == this,则范围 (First, Last) 不得包含 Where 所指向的元素。)
如果范围接合插入 N 个元素和 &Source != this,则类迭代器的对象会递增 N 次。
任何迭代器、指针或指定接合的元素的引用都不会变得无效。
示例
// forward_list_splice_after.cpp
// compile with: /EHsc /W4
#include <forward_list>
#include <iostream>
using namespace std;
template <typename S> void print(const S& s) {
for (const auto& p : s) {
cout << "(" << p << ") ";
}
cout << endl;
}
int main()
{
forward_list<int> c1{ 10, 11 };
forward_list<int> c2{ 20, 21, 22 };
forward_list<int> c3{ 30, 31 };
forward_list<int> c4{ 40, 41, 42, 43 };
forward_list<int>::iterator where_iter;
forward_list<int>::iterator first_iter;
forward_list<int>::iterator last_iter;
cout << "Beginning state of lists:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
cout << "c3 = ";
print(c3);
cout << "c4 = ";
print(c4);
where_iter = c2.begin();
++where_iter; // start at second element
c2.splice_after(where_iter, c1);
cout << "After splicing c1 into c2:" << endl;
cout << "c1 = ";
print(c1);
cout << "c2 = ";
print(c2);
first_iter = c3.begin();
c2.splice_after(where_iter, c3, first_iter);
cout << "After splicing the first element of c3 into c2:" << endl;
cout << "c3 = ";
print(c3);
cout << "c2 = ";
print(c2);
first_iter = c4.begin();
last_iter = c4.end();
// set up to get the middle elements
++first_iter;
c2.splice_after(where_iter, c4, first_iter, last_iter);
cout << "After splicing a range of c4 into c2:" << endl;
cout << "c4 = ";
print(c4);
cout << "c2 = ";
print(c2);
}
要求
标头:<forward_list>
命名空间: std