list容器:链表容器,不支持随机遍历。不能用通用的sort算法(要有随机访问迭代器),容器自己有排序算法

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<list>
#include<algorithm>
#include<vector>
using namespace std; void printList(const list<int> &mylist){ for (list<int>::const_iterator it = mylist.begin(); it != mylist.end(); ++it){
cout << *it << " ";
}
cout << endl;
} //1. list构造函数
/*
list<T> lstT;//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;
}

最新文章

  1. android webView开发之js调用java代码示例
  2. IOS网络请求的一些需要记录的info设置
  3. oneuijs/You-Dont-Need-jQuery
  4. C# 微信v3退款
  5. NeuSoft(4)编写字符设备驱动
  6. Python - 利用pip管理包
  7. Bootstrap(转)
  8. Zabbix监控交换机设置
  9. ZOJ 2588 Burning Bridges (tarjan求割边)
  10. 1.2、Mybatis二级缓存测试
  11. phpExcel使用与中文处理教程
  12. IOS 真机调试以及发布应用 1
  13. 43个优秀的Swift开源项目推荐(转载)
  14. Struts2自定义拦截器Interceptor以及拦截器登录实例
  15. [LeetCode] 01 Matrix 题解
  16. springboot~Mongodb的集成与使用
  17. Kubernetes fluentd+elasticsearch+kibana
  18. gulp插件gulp-nunjucks-render的使用及gulp4的简单了解
  19. unity 常用插件 2
  20. background-attachment属性

热门文章

  1. day04-MySQL常用函数01
  2. HDFS追加数据报错解决办法
  3. [转]VB中资源文件.res的使用方法详解
  4. .NET二叉树,递归和迭代遍历二叉树
  5. Aspose.Cells实现excel预览
  6. WebApi如何启用Session并且使用
  7. laravel ajax用法
  8. 关于Module Not Found Error No module named Crypto解决
  9. 关于python函数传参
  10. orcl between and 时间