共用方式為


list::splice

從來源清單移除項目,並將項目插入至目的地清單。

// insert the entire source list void splice( const_iterator Where, list<Type, Allocator>& Source ); void splice( const_iterator Where, list<Type, Allocator>&& Source );  // insert one element of the source list void splice( const_iterator Where, list<Type, Allocator>& Source, const_iterator Iter ); void splice( const_iterator Where, list<Type, Allocator>&& Source, const_iterator Iter );  // insert a range of elements from the source list void splice( const_iterator Where, list<Type, Allocator>& Source, const_iterator First, const_iterator Last );  void splice( const_iterator Where, list<Type, Allocator>&& Source, const_iterator First, const_iterator Last );

參數

  • Where
    目的地清單中的位置 (要在此位置之前插入)。

  • Source
    要插入至目的地清單的來源清單。

  • Iter
    要從來源清單插入的項目。

  • First
    要從來源清單插入的範圍中的第一個項目。

  • Last
    要從來源清單插入的範圍中的最後一個項目,這之後的第一個位置。

備註

第一對成員函式會將來源清單中的所有項目插入至目的地清單 (插入到 Where 所參考的位置之前),並從來源清單移除所有項目 (&Source 絕不可等於 this)。

第二對成員函式會將 Iter 所參考的項目插入至 Where 所參考之目的地清單中的位置之前,並從來源清單移除 Iter (若 Where == Iter || Where == ++Iter,則不會產生任何變化)。

第三對成員函式會將 [First, Last) 指定的範圍插入至 Where 所參考之目的地清單中的項目之前,並從來源清單移除項目的範圍 (若 &Source == this,則範圍 [First, Last) 絕不可包含 Where 所指出的項目)。

若範圍的接合插入 N 項目,且 &Source != this,則迭代器會遞增 N 次。

在所有情況中,迭代器、指標或關於接合的項目的參考都會保持有效,並會傳送至目的地容器。

範例

// list_splice.cpp
// compile with: /EHsc /W4
#include <list>
#include <iostream>

using namespace std;

template <typename S> void print(const S& s) {
    cout << s.size() << " elements: ";

    for (const auto& p : s) {
        cout << "(" << p << ") ";
    }

    cout << endl;
}

int main()
{
    list<int> c1{10,11};
    list<int> c2{20,21,22};
    list<int> c3{30,31};
    list<int> c4{40,41,42,43};

    list<int>::iterator where_iter;
    list<int>::iterator first_iter;
    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(where_iter, c1);
    cout << "After splicing c1 into c2:" << endl;
    cout << "c1 = ";
    print(c1);
    cout << "c2 = ";
    print(c2);

    first_iter = c3.begin();
    c2.splice(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;
    --last_iter;
    c2.splice(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);
}
  

需求

標頭:<list>

命名空間: std

請參閱

參考

list 類別

標準樣板程式庫