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()