list splice 函式詳解

2021-09-07 23:20:26 字數 2461 閱讀 7588

list::splice實現list拼接的功能。將源list的內容部分或全部元素刪除,拼插入到目的list。

函式有以下三種宣告:

void splice ( iterator position, list& x );  // 

void splice ( iterator position, list& x, iterator i );

void splice ( iterator position, list& x, iterator first, iterator last );

函式說明:在list間移動元素:

將x的元素移動到目的list的指定位置,高效的將他們插入到目的list並從x中刪除。

目的list的大小會增加,增加的大小為插入元素的大小。x的大小相應的會減少同樣的大小。

前兩個函式不會涉及到元素的建立或銷毀。第三個函式會。

指向被刪除元素的迭代器會失效。

引數:position

目的list的位置,用來標明 插入位置

x源list、

first,last

x裡需要被移動的元素的迭代器。區間為[first, last).

包含first指向的元素,不包含last指向的元素。

例子:// splicing lists

#include

#include

#include

#include

using namespace std;

int main ()

listmylist1, mylist2;

list::iterator it;

// set some initial values:

for (int i=1; i<=4; i++)

mylist1.push_back(i);      // mylist1: 1 2 3 4

for (int i=1; i<=3; i++)

mylist2.push_back(i*10);   // mylist2: 10 20 30

it = mylist1.begin();

++it;                         // points to 2

mylist1.splice (it, mylist2); // mylist1: 1 10 20 30 2 3 4

// mylist2 (empty)

// "it" still points to 2 (the 5th element)                                     

mylist2.splice (mylist2.begin(),mylist1, it);

// mylist1: 1 10 20 30 3 4

// mylist2: 2

// "it" is now invalid.

it = mylist1.begin();

advance(it,3);                // "it" points now to 30

mylist1.splice ( mylist1.begin(), mylist1, it, mylist1.end());

// mylist1: 30 3 4 1 10 20

cout << "mylist1 contains:";

for (it=mylist1.begin(); it!=mylist1.end(); it++)

cout << " " << *it;

cout << "/nmylist2 contains:";

for (it=mylist2.begin(); it!=mylist2.end(); it++)

cout << " " << *it;

cout << endl;

listdictionary, bword;

dictionary.push_back("any");

dictionary.push_back("angle");

dictionary.push_back("ajust");

dictionary.push_back("common");

dictionary.push_back("cannon");

dictionary.push_back("company");

bword.push_back("blue");

bword.push_back("banana");

bword.push_back("break");

list::iterator its = dictionary.begin();

for (int i = 0; i < 3; i++)

its++;

dictionary.splice(its, bword);

copy(bword.begin(), bword.end(), ostream_iterator(cout, "/n"));

return 0;

list splice 函式詳解

list splice實現list拼接的功能。將源list的內容部分或全部元素刪除,拼插入到目的list。函式有以下三種宣告 void splice iterator position,list x void splice iterator position,list x,iterator i vo...

list splice函式的使用

list splice實現list拼接的功能。將源list的內容部分或全部元素刪除,拼插入到目的list。函式有以下三種宣告 一 void splice iterator position,list x 二 void splice iterator position,list x,iterator ...

mod函式詳解

我們知道,mod函式是乙個求餘函式,其格式為 mod nexp1,nexp2 即是兩個數值表示式作除法運算後的餘數。那麼 兩個同號整數求餘與你所知的兩個正數求餘完全一樣 即兩個負整數與兩個正整數的演算法一樣 一 兩個異號整數求餘 1.函式值符號規律 餘數的符號 mod 負,正 正 mod 正,負 負...