1.功能:将一个列表容器的一部分连续的元素从该列表中删除后插入到另一个列表容器
2.函数原型:
- s1.splice(pos, s2); //将s2列表的所有元素插入到s1列表中pos-1和p之间,将s2列表清空。
- s1.splice(pos, s2, q1); //将s2列表中q1所指向的元素插入到s1列表中pos-1和p之间,将q1所指向的元素从s2列表删除。
- s1.splice(pos,s2, q1, q2); //将s2列表中[ q1, q2) 区间内的所有元素插入到s1列表中pos-1和p之间,将[ q1, q2)区间内的元素从s2列表删除。
#include<iostream> #include<list> #include<iterator> #include<string> using namespace std; int main() { string names1[]={"11","22","33","44"}; string names2[]={"55","66","77","88"}; list<string>s1(names1,names1+4); list<string>s2(names2,names2+4); s2.splice(s2.end(),s1,s1.begin()); list<string>::iterator iter1=s1.begin(); advance(iter1,2); //iter1往后前进2个元素,它将指向s1第3个元素 list<string>::iterator iter2=s2.begin(); ++iter2; list<string>::iterator iter3=iter2; advance(iter3,2); //iter3向后亲近2个元素,指向s2第4个元素 s1.splice(iter1,s2,iter2,iter3); //输出s1和s2 copy(s1.begin(),s1.end(),ostream_iterator<string>(cout," ")) ; cout<<endl; //22 33 66 77 44 copy(s2.begin(),s2.end(),ostream_iterator<string>(cout," ")) ; cout<<endl; // 55 88 11 return 0; }