STL:C++标准容器库 :list

int main()
{
    list<Student> stulist;
    stulist.push_back(Student("zhangsan",22));
    stulist.push_back(Student("lisi",23));
    stulist.push_back(Student("lisi",53));
    stulist.push_back(Student("liyunlong",52));
    stulist.push_back(Student("kaipao",48));
    stulist.push_back(Student("chuyunfei",51));

//    list<Student>::iterator it;       //ok    遍历
//    for(it=stulist.begin();it!=stulist.end();it++)
//        it->showStu();
 #if 0
    it = stulist.begin();
    it++;
    it--;
    (it + 1)->showStu();//error 因为底层是链表不是数组
#endif
    //list的查找也必须使用通用算法进行查找
    stulist.remove(Student("liyunlong",0)); //删除所有的指定值,调用==操作符重载
    stulist.remove_if(Find_lisi()); //删除所有指定值,调用()操作 符重载
//    通用算法
    for_each(stulist.begin(),stulist.end(),show);   //使用通用算法进行遍历
}
    //查重
//    stulist.unique();//自动调用等号操作符重载
//    stulist.unique(cmpname);//自定义方式查

//    it = stulist.begin(); //自己定义算法
//    bool isflag=1;
//    while((it=find(it,stulist.end(),Student("lisi",0)))!=stulist.end())
//    {
//        if(isflag)
//        {
//            isflag = false;
//            it++;
//        }
//        else
//        {
//            stulist.erase(it++);
//        }
//    }
    list<Student> stulist2;
    stulist2.push_back(Student("222",22));
    stulist2.push_back(Student("33",23));
    stulist2.push_back(Student("44",53));
    stulist2.push_back(Student("51",53));

//    stulist.merge(stulist2);//拼接    stulist2内容为空
//    stulist.splice(stulist.end(),stulist2);//拼接 stulist2内容为空1
    stulist.splice(stulist.end(),stulist2,++stulist2.begin(),--stulist2.end());//
//    stulist.splice(stulist.end(),stulist2,++stulist2.begin());
    for_each(stulist.begin(),stulist.end(),show);

list:

1.底层是链表实现:增删效率高,查询效率低

2.允许有重复值

3.无序的容器(不会自动排序)

4.有自己的sort(),find()

原文地址:https://www.cnblogs.com/xiaozoui11cl/p/12787371.html