共用方式為


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,則會將類別為 iterator 的物件遞增 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 類別