list

来源:互联网 发布:php pack 打包字符串 编辑:程序博客网 时间:2024/06/06 05:33
#include <iostream>#include <math.h>#include <vector>#include <list>using namespace std;bool single_digit(const int &value){return (value<5);}class is_odd{public:    bool operator()(const int &value){return (value%2==1);}};bool compare_nocase(const string &first,const string&second){    int i=0;    if((i<first.length()) && (i<second.length()))    {        if(towlower(first[i]) < towlower(second[i]))            return true;        else            i++;    }    if(first.length()<second.length())        return true;    else        return false;}bool compare_integarl_part(double first,double second){    return ((int)first == (int)second);}class is_near{public:    bool operator()(double first,double second)    {        return (fabs(first-second)<5.0);    }};int main(){    cout<<"---back"<<endl;    list<int> intlist;    intlist.push_back(10);    cout<<"list size:"<<intlist.size()<<endl;    while(intlist.back()!=0)        intlist.push_back(intlist.back()-1);    cout<<"list size:"<<intlist.size()<<endl;    cout<<"intlist:";    for(list<int>::iterator it=intlist.begin();it!=intlist.end();it++)        cout<<" "<<*it;    cout<<endl;    list<int>(intlist).swap(intlist);    //erase    cout<<"---erase-advance"<<endl;    list<int>eraselist;    for(int i=1;i<10;++i)        eraselist.push_back(i*10);    list<int>::iterator it1,it2;    it1=it2=eraselist.begin();    //                                       10 20 30 40 50 60 70 80 90    //                                       ^^    advance(it2,6);              //^                                ^    it1++;                              //       ^                         ^    //                                       10 30 40 50 60 70 80 90    it1=eraselist.erase(it1);//      ^                    ^    it2=eraselist.erase(it2);// 10 30 40 50 60 80 90    //                                               ^                     ^    ++it1;                              //             ^               ^    --it2;                               //              ^        ^    eraselist.erase(it1,it2);//10 30 60 80 90    //                                                         ^    cout<<"eraselist:";    for(it1=eraselist.begin();it1!=eraselist.end();++it1)        cout<<" "<<*it1;    cout<<endl;    list<int>(eraselist).swap(eraselist);    //insert    cout<<"---insert"<<endl;    list<int> insertlist;    list<int>::iterator it;    for(int i=1;i<=5;++i)        insertlist.push_back(i);//1 2 3 4 5    it=insertlist.begin();    ++it;               //指向2             ^    insertlist.insert(it,10);   //1 10 2 3 4 5    //it还是指向2                            ^    insertlist.insert(it,2,20);//1 10 20 20 2 3 4 5    --it;//it指向第二个20                      ^    vector<int>insertvector(2,30);    insertlist.insert(it,insertvector.begin(),insertvector.end());    //1 10 20 30 30 20 2 3 4 5    cout<<"insertlist:";    for(it=insertlist.begin();it!=insertlist.end();++it)        cout<<" "<<*it;    cout<<endl;    list<int>(insertlist).swap(insertlist);    //list    cout<<"---list"<<endl;    list<int>first;    list<int>second(4,100);    list<int>third(second.begin(),second.end());    list<int>fourth(third);    int array[]={16,2,77,29};    list<int>fifth(array,array+sizeof(array)/sizeof(array[0]));    cout<<"fifth:";    for(list<int>::iterator it=fifth.begin();it!=fifth.end();++it)        cout<<" "<<*it;    cout<<endl;    list<int>(first).swap(first);    list<int>(second).swap(second);    list<int>(third).swap(third);    list<int>(fourth).swap(fourth);    list<int>(fifth).swap(fifth);    //merge    cout<<"---merge"<<endl;    list<int>merge1list;    list<int>merge2list;    merge1list.push_back(2);    merge1list.push_back(9);    merge1list.push_back(7);    merge2list.push_back(222);    merge2list.push_back(33);    merge2list.push_back(44);    //unsort    merge1list.merge(merge2list);    cout<<"unsort merge1list:";    for(list<int>::iterator it=merge1list.begin();it!=merge1list.end();++it)        cout<<" "<<*it;    cout<<endl;    //sort    merge1list.sort();    merge2list.sort();    merge1list.merge(merge2list);    cout<<"sort merge1list:";    for(list<int>::iterator it=merge1list.begin();it!=merge1list.end();++it)        cout<<" "<<*it;    cout<<endl;    list<int>(merge1list).swap(merge1list);    list<int>(merge2list).swap(merge2list);    //remove_if    cout<<"---remove_if"<<endl;    list<int>remove_iflist;    for(int i=0;i<10;++i)        remove_iflist.push_back(i);    remove_iflist.remove_if(single_digit);    cout<<"single_digit:";    for(list<int>::iterator it=remove_iflist.begin();        it!=remove_iflist.end();++it)        cout<<" "<<*it;    cout<<endl;    remove_iflist.remove_if(is_odd());    cout<<"is_odd:";    for(list<int>::iterator it=remove_iflist.begin();        it!=remove_iflist.end();++it)        cout<<" "<<*it;    cout<<endl;    list<int>(remove_iflist).swap(remove_iflist);    //rend    cout<<"---rend"<<endl;    list<int>rendlist;    for(int i=0;i<10;++i)        rendlist.push_back(i);    cout<<"reverse rendlist:";    list<int>::reverse_iterator rit;    for(rit=rendlist.rbegin();rit!=rendlist.rend();++rit)        cout<<" "<<*rit;    cout<<endl;    list<int>(rendlist).swap(rendlist);    //resize    cout<<"---resize"<<endl;    list<int>resizelist;    for(int i=0;i<10;++i)        resizelist.push_back(i);    resizelist.resize(5);    cout<<"resize 5:";    for(list<int>::iterator it=resizelist.begin();        it!=resizelist.end();++it)        cout<<" "<<*it;    cout<<endl;    resizelist.resize(8,100);    cout<<"resize 8,100:";    for(list<int>::iterator it=resizelist.begin();        it!=resizelist.end();++it)        cout<<" "<<*it;    cout<<endl;    resizelist.resize(12);    cout<<"resize 12:";    for(list<int>::iterator it=resizelist.begin();        it!=resizelist.end();++it)        cout<<" "<<*it;    cout<<endl;    list<int>(resizelist).swap(resizelist);    //size    cout<<"---size"<<endl;    list<int>sizelist;    cout<<"size1:"<<sizelist.size()<<endl;    for(int i=0;i<10;++i)        sizelist.push_back(i);    cout<<"size2:"<<sizelist.size()<<endl;    sizelist.insert(sizelist.begin(),10,100);    cout<<"size3:"<<sizelist.size()<<endl;    sizelist.pop_back();    cout<<"size4:"<<sizelist.size()<<endl;    list<int>(sizelist).swap(sizelist);    //sort    cout<<"---srot"<<endl;    list<string> sortlist;    sortlist.push_back("one");    sortlist.push_back("two");    sortlist.push_back("three");    sortlist.sort();    cout<<"sort1:";    for(list<string>::iterator it=sortlist.begin();        it!=sortlist.end();++it)        cout<<" "<<*it;    cout<<endl;    sortlist.sort(compare_nocase);    cout<<"sort2:";    for(list<string>::iterator it=sortlist.begin();        it!=sortlist.end();++it)        cout<<" "<<*it;    cout<<endl;    //splice    list<int> splicelist1,splicelist2;    list<int>::iterator spliceit;    for(int i=1;i<=4;++i)        splicelist1.push_back(i);//splicelist1:1 2 3 4    for(int i=1;i<=3;++i)        splicelist2.push_back(i*10);//splicelist2:10 20 30    spliceit=splicelist1.begin();    ++spliceit;   //points to 2    splicelist1.splice(spliceit,splicelist2);//splicelist1:1 10 20 30 2 3 4    //                                                     splicelist2:empty    //                                                     it still points to 2    splicelist2.splice(splicelist2.begin(),splicelist1,spliceit);    //splicelist1:1 10 20 30 3 4    //splicelist2:2    //it is invalid    spliceit=splicelist1.begin();    advance(spliceit,3);//it points to 30    splicelist1.splice(splicelist1.begin(),splicelist1,spliceit,splicelist1.end());    //splicelist1:30 3 4 1 10 20    cout<<"splicelist1:";    for(spliceit=splicelist1.begin();spliceit!=splicelist1.end();++spliceit)        cout<<" "<<*spliceit;    cout<<endl;    cout<<"splicelist2:";    for(spliceit=splicelist2.begin();spliceit!=splicelist2.end();++spliceit)        cout<<" "<<*spliceit;    cout<<endl;    list<int>(splicelist1).swap(splicelist1);    list<int>(splicelist2).swap(splicelist2);    //swap    cout<<"---swap"<<endl;    list<int>swaplist1(3,100);    list<int>swaplist2(2,500);    list<int>::iterator swapit;    swaplist1.swap(swaplist2);    cout<<"swaplist1:";    for(swapit=swaplist1.begin();        swapit!=swaplist1.end();++swapit)        cout<<" "<<*swapit;    cout<<endl;    cout<<"swaplist2:";    for(swapit=swaplist2.begin();        swapit!=swaplist2.end();++swapit)        cout<<" "<<*swapit;    cout<<endl;    list<int>(swaplist1).swap(swaplist1);    list<int>(swaplist2).swap(swaplist2);    //unique    cout<<"---unique"<<endl;    list<double>uniquelist;    list<double>::iterator uniqueit;    for(int i=0;i<10;++i)        uniquelist.push_back(rand()%1000/(double)100);    cout<<"uniquelist:1:";    for(uniqueit=uniquelist.begin();uniqueit!=uniquelist.end();++uniqueit)        cout<<" "<<*uniqueit;    cout<<endl;    uniquelist.sort();    uniquelist.unique();    cout<<"uniquelist:2:";    for(uniqueit=uniquelist.begin();uniqueit!=uniquelist.end();++uniqueit)        cout<<" "<<*uniqueit;    cout<<endl;    uniquelist.unique(compare_integarl_part);    cout<<"uniquelist:3:";    for(uniqueit=uniquelist.begin();uniqueit!=uniquelist.end();++uniqueit)        cout<<" "<<*uniqueit;    cout<<endl;    uniquelist.unique(is_near());    cout<<"uniquelist:4:";    for(uniqueit=uniquelist.begin();uniqueit!=uniquelist.end();++uniqueit)        cout<<" "<<*uniqueit;    cout<<endl;    list<double>(uniquelist).swap(uniquelist);    //    return 0;}

原创粉丝点击