list容器 Posted on 2020-04-22 | In STL Words count in article: 1.2k | Reading time ≈ 6 list 容器的基本操作与示范 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200//// Created by Jason on 2020/3/29.///* 1ist构造函数 1ist<T>1istT;//1ist采用采用模板类实现,对象的默认构造形式: list(beg,end);//构造函数将(beg,end)区间中的元素拷贝给本身o list( n, elem);//构造函数将n个以l拷贝绐本身。 list( const list&list);//拷贝构造函数。 list数据元素插入和删除操作 push_back(elem);//在睿器尾部加入一个元素 pop_back();/剛刪除容器中最后一个元素4 push_front(elem);//在容器开头插入一个元素 pop_front();//从寳器开头移除第一个元素 insert(pos,elem);//在pos位置插eem元素的拷贝,返回新数据的位置 insert(pos, n, elem);//在pos位置插入n个elem数据,无返回值。 ert(pos,beg,end);/在pos位置插入[beg,erd区间的数据,无返回值 clear ();//移除容器的所有数 erase(beg,end);/刪除[beg,ed)区间的数据,返回下一个数据的位置。φ erase(pos);/!刪除pos位置的数据,返回下一个数据的位置。 remove(e1em);//刪除荟器中所有与e1em值匹配的元素。3643list大小操作 size()://返回答器中元素的个数 empty()://判断容器是否为空 resize (num );/重新指定器的长度为num 若窨器变长,则以默认值填充新位置 如果容器变短,则末尾超出容器长度的元素被刪除φ resize(num, elem);/重新指定容器的长度为num 若窨器变长,则以elem值填充新位置。 如果器变短,则末尾超出容器长度的元素被除。3644list 赋值操作 assign (beg,end);/将[beg,end)区阃中的数据拷贝賦值绐本身 assign(n,elem);/将n个elem拷贝赋值给本身 1ist& operator=(const list&1ist);/重载等号操作符 swap(1ist);/将1st与本身的元素互换。364.5 list数据的存取 front();//返回第一个元素 back();//返回最后一个元素3.6.4.6 list反转排序 reverse();//反转链表,比如list包含1,3,5 元素,运行此方法后,list包含5,3,1元素 sort();//list 排序 * */#include<bits/stdc++.h>using namespace std;void printList(const list<int>&L){ for(_List_const_iterator<int> it = L .begin(); it != L .end(); it++) { cout<<*it<<" " ; } cout<<endl;}//list 是一个双向链表void test01(){ list<int>L; list<int>L2(10,10); list<int>L3(L2.begin(),L2.end()); list<int>L4; L4.push_back(10); L4.push_back(20); L4.push_back(30); L4.push_front(100); L4.push_front(200); L4.push_front(300); L4.push_front(300); //正序打印 for(list<int>::iterator it = L4.begin();it!=L4.end();it++) { cout<<*it<<" " ; } cout<<endl; //逆序打印 for(list<int>::reverse_iterator it = L4.rbegin();it != L4.rend();it++) { cout<<*it<<" "; } cout<<endl; L4.insert(L4.begin(),1000); printList(L4); //remove(elem) L4.remove(300);//凡是看见300都删除,删除的是所有与elem的 匹配元素 printList(L4);}void test03(){ list<int>L; L.push_back(10); L.push_back(20); L.push_back(30); L.push_front(100); L.push_front(200); L.push_front(300); L.push_front(300); list<int>L2; L2.assign(10,100); printList(L2); L2.assign(L.begin(),L.end());//重新赋值 printList(L2); cout<<"THE FRONT ="<<L2.front()<<endl; cout<<"THE Back ="<<L2.back()<<endl;}bool myCompare(int v1 ,int v2){ return v1 > v2;}void test04(){ list<int>L; L.push_back(10); L.push_back(20); L.push_back(30); L.push_front(100); L.push_front(200); L.push_front(300); L.push_front(300); //反转(是质变) L.reverse(); printList(L); //排序 //所有系统提供的标准算法 使用的容器提供的迭代器都必须支持随机访问 // 不知处随机访问的 L.sort();//这是有用的,从小到大// sort(L.begin(),L.end());这是没用的 printList(L); L.sort(myCompare); printList(L);}class Person{public: Person(string name , int age,int height) { this->m_Name = name; this->m_Age = age; this->m_height = height; } string m_Name; int m_Age; int m_height;};bool myComparePerson(Person &P1 ,Person &P2){ //按照年龄,升序 //如果年龄相同 按照身高进行降序 if(P1.m_Age==P2.m_Age) return P1.m_height>P2.m_height; else return P1.m_Age <P2.m_Age;}void test05(){ list<Person>L; Person p1("大娃",30,170); Person p2("2娃",28,190); Person p3("3娃",26,168); Person p4("4娃",24,187); Person p5("5娃",24,192); Person p6("6娃",24,123); Person p7("7娃",20,284); Person p8("爷爷",90,154); Person p9("蛇精",999,999); L.push_back(p1); L.push_back(p2); L.push_back(p3); L.push_back(p4); L.push_back(p5); L.push_back(p6); L.push_back(p7); L.push_back(p8); L.push_back(p9); for(list<Person>::iterator it = L.begin();it!=L.end();it++) { cout<<"姓名 "<<it->m_Name<<"年龄 "<<it->m_Age<<" 身高 "<<it->m_height<<endl; } cout<<endl<<endl; L.sort(myComparePerson);//自定义的数据要自己写排序规则 for(list<Person>::iterator it = L.begin();it!=L.end();it++) { cout<<"姓名 "<<it->m_Name<<"年龄 "<<it->m_Age<<" 身高 "<<it->m_height<<endl; }}int main(){// test01();// test03();// test04(); test05(); system("pause"); return 0;} -------------本文结束,感谢您的阅读------------- Post author: Jason Post link: https://jasonxqh.github.io/2020/04/22/list%E5%AE%B9%E5%99%A8/ Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.