函数有以下三种声明:
void splice ( iterator position, list<T,Allocator>& x ); //
void splice ( iterator position, list<T,Allocator>& x, iterator i );
void splice ( iterator position, list<T,Allocator>& x, iterator first, iterator last );
函数说明:在list间移动元素:
将x的元素移动到目的list的指定位置,高效的将他们插入到目的list并从x中删除。
目的list的大小会增加,增加的大小为插入元素的大小。x的大小相应的会减少同样的大小。
前两个函数不会涉及到元素的创建或销毁。第三个函数会。
指向被删除元素的迭代器会失效。
参数:
position
目的list的位置,用来标明 插入位置
x
源list、
first,last
x里需要被移动的元素的迭代器。区间为[first, last).
包含first指向的元素,不包含last指向的元素。
例子:

#include <iostream>
#include
<list>#include
<string>#include
<algorithm> using namespace std; int main (){
list
<int> mylist1, mylist2;list
<int>::iterator it;// set some initial values:
for (int i=1; i<=4; i++)
mylist1.push_back(i);
// mylist1: 1 2 3 4for (int i=1; i<=3; i++)
mylist2.push_back(i
*10); // mylist2: 10 20 30it = 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 30mylist1.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;list
<string> dictionary, 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
<string>::iterator its = dictionary.begin();for (int i = 0; i < 3; i++)
its
++;dictionary.splice(its, bword);
copy(bword.begin(), bword.end(), ostream_iterator
<string>(cout, “\n“));return 0;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/bichenggui/archive/2009/10/15/4674900.aspx
- 本文固定链接: http://jingyan.idoubi.net/2452.html
- 转载请注明: 游戏创作者大陆 于 逗分享开发经验 发表