list的splice方法
阿新 • • 發佈:2018-12-31
#include <iostream> #include <list> using namespace std; int main () { std::list<int> mylist1, mylist2; std::list<int>::iterator it; // set some initial values: for (int i=1; i<=4; ++i) mylist1.push_back(i); cout << "mylist1 contains:"; for (it=mylist1.begin(); it!=mylist1.end(); ++it) cout << ' ' << *it; cout << endl; // mylist1: 1 2 3 4 for (int i=1; i<=3; ++i) mylist2.push_back(i*10); cout << "mylist2 contains:"; for (it=mylist2.begin(); it!=mylist2.end(); ++it) cout << ' ' << *it; cout <<endl; // mylist2: 10 20 30 it = mylist1.begin(); ++it; cout<<"it: "<<*it<<endl; // points to 2 mylist1.splice (it, mylist2); //第一種用法,list1呼叫splice方法,將list2中的元素插入到it前面,清空list2連結串列元素 // mylist1: 1 10 20 30 2 3 4 // mylist2 (empty) // "it" still points to 2 (the 5th element) cout<<"it: "<<*it<<endl; // points to 2 /*cout << "mylist1 contains:"; for (it=mylist1.begin(); it!=mylist1.end(); ++it) cout << ' ' << *it; cout << endl; cout << "mylist2 contains:"; for (it=mylist2.begin(); it!=mylist2.end(); ++it) cout << ' ' << *it; cout << endl;*///這個遍歷改變了it所指的值 mylist2.splice (mylist2.begin(),mylist1, it);//第二種用法,list2呼叫splice方法,將list1中的單個元素插入到list2位置的前面 // 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());//第三種用法,list1呼叫splice方法,將list1的it位置到end位置插入到list1的begin前面 // mylist1: 30 3 4 1 10 20 cout << "mylist1 contains:"; for (it=mylist1.begin(); it!=mylist1.end(); ++it) cout << ' ' << *it; cout << endl; cout << "mylist2 contains:"; for (it=mylist2.begin(); it!=mylist2.end(); ++it) cout << ' ' << *it; cout << endl; return 0; }