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

请参见

参考

forward_list 类