list容器:链表容器,不支持随机遍历。不能用通用的sort算法(要有随机访问迭代器),容器自己有排序算法
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#include
using namespace std;
void printList(const list
for (list<int>::const\_iterator it = mylist.begin(); it != mylist.end(); ++it){
cout << \*it << " ";
}
cout << endl;
}
//1. list构造函数
/*
list
list(beg,end);//构造函数将[beg, end)区间中的元素拷贝给本身。
list(n,elem);//构造函数将n个elem拷贝给本身。
list(const list &lst);//拷贝构造函数。
*/
void test01(){
//list迭代器是双向迭代器,
list<int> mylist(10, 1);
list<int> mylist2(mylist.begin(), mylist.end());
printList(mylist);
list<int>::iterator it;
//sort(mylist.begin(), mylist.end()); //sort算法不能对list容器排序
mylist.sort();
}
//2. list数据元素插入和删除操作
/*
push_back(elem);//在容器尾部加入一个元素
pop_back();//删除容器中最后一个元素
push_front(elem);//在容器开头插入一个元素
pop_front();//从容器开头移除第一个元素
insert(pos,elem);//在pos位置插elem元素的拷贝,返回新数据的位置。
insert(pos,n,elem);//在pos位置插入n个elem数据,无返回值。
insert(pos,beg,end);//在pos位置插入[beg,end)区间的数据,无返回值。
clear();//移除容器的所有数据
erase(beg,end);//删除[beg,end)区间的数据,返回下一个数据的位置。
erase(pos);//删除pos位置的数据,返回下一个数据的位置。
remove(elem);//删除容器中所有与elem值匹配的元素。
*/
bool mycompare(int val){
return val > 50;
}
void test02(){
list<int> mylist;
mylist.push\_back(10);
mylist.push\_back(20);
mylist.push\_back(30);
mylist.push\_back(40);
mylist.push\_back(50);
mylist.push\_front(100);
mylist.push\_front(200);
mylist.push\_front(300);
mylist.push\_front(400);
vector<int> v;
v.push\_back(1000);
v.push\_back(2000);
mylist.insert(++mylist.begin(), v.begin(), v.end());
printList(mylist);
mylist.push\_back(300);
mylist.push\_back(300);
printList(mylist);
//mylist.remove(300);
mylist.remove\_if(mycompare);
printList(mylist);
}
//3. list赋值操作 list数据的存取
/*
assign(beg, end);//将[beg, end)区间中的数据拷贝赋值给本身。
assign(n, elem);//将n个elem拷贝赋值给本身。
list& operator=(const list &lst);//重载等号操作符
swap(lst);//将lst与本身的元素互换。
front();//返回第一个元素。
back();//返回最后一个元素。
*/
void test03(){
list<int> mylist;
mylist.assign(10,10);
printList(mylist);
cout << mylist.front() << endl;
cout << mylist.back() << endl;
}
//4. list反转排序
/*
reverse();//反转链表,比如lst包含1,3,5元素,运行此方法后,lst就包含5,3,1元素。
sort(); //list排序
*/
bool canbucanswap(int v1,int v2){
return v1 > v2;
}
void test04(){
list<int> mylist;
mylist.push\_back(10);
mylist.push\_back(40);
mylist.push\_back(30);
mylist.push\_back(50);
mylist.push\_back(20);
printList(mylist);
mylist.reverse();
printList(mylist);
//排序
mylist.sort(canbucanswap);
printList(mylist);
}
//list容器迭代器类型要清楚,还要直到list容器是自己提供排序算法,通用的sort算法不能对list排序
int main(){
//test01();
//test02();
//test03();
test04();
system("pause");
return EXIT\_SUCCESS;
}
手机扫一扫
移动阅读更方便
你可能感兴趣的文章