《ACM-STL简介》由会员分享,可在线阅读,更多相关《ACM-STL简介(34页珍藏版)》请在金锄头文库上搜索。
1、ACM 暑期训练-STL简介信息学院信息学院ACMACM集训队集训队杨彦超杨彦超- -mylermylerSTL简介什么是STLlSTL就是Standard Template Library(标准模板库) 的简称,它是由Alexander Stepanov和Meng Lee在惠 普实验室工作时所开发出来的。现在虽说它主要出现 在C+中,但在被引入C+之前,Alex和David Musser 已对该技术进行了很长一段时间的研究。STL是多年来 编程应用中常用组件的集合,STL的贡献是将各组件和 接口泛化及标准化。这样可以极大地提高编程效率, STL现在是C+的一部分,任何C+平台都包含着它。 S
2、TL是有用的l哪有用?l哪都有用!进入STLl下面带给大家l分别简单介绍 ,sort,next_permutation,map,stack,queue, listalgorithml#includelusing namespace std;lsort(a,a+n); lsort(a,a+n,cmp);lqsort(a,n,sizeof(*),cmp);l下面给大家演示下sort函数的用法 ID_1024l#include l#include using namespace std; lint main()l lint a2000,len,i; lcinlen; lwhile(1) l If(0
3、=len) lbreak; lfor(i=0;iai; lsort(a,a+len);lfor(i=0;ilen; lreturn 0; l l由此可见调用STL中的函数,很方便的对数组进 行排序了,从时间上比你去写冒泡排序或其它 排序快的多吧.lsort不仅可以对数组进行排序,还可以对结构体 进行排序,只需对 l#include lusing namespace std;l int main(int argc, char *argv) l int n; lchar str10=“123456789“, *start, *end; lcinn; lstart = str; lstrn = 0;
4、 lend = lcoutlusing namespace std;lmap my;l#includelmap my;maplmyx=y;lmy-100=2;lmy“ok”=3;lmy.clear();lmy.erase(key);lmy.erase();maplmap:iterator it; lmy.erase(it);lit=my.lower_bound(vi); lit-;lit+;让我们来做个示范l1304lmap的用法(stl_map.cpp)lSOJ 1627,2759queue l#include using namespace std; lqueue myqueue;lmyq
5、ueue.top();lmyqueue.push(x);lmyqueue.pop();lBFS中需要一个待扩展的队列,STL中queue很 方便.JOJ2410(试着用STL中的队列写)l结构体的队列ltypedef struct Point l int x, y; lPOINT; lqueue myqueue; (STL_queue.cpp)stack l#include using namespace std; lstack mystack;lmystack.top();lmystack.push(x);lmystack.pop();l结构体的栈ltypedef struct Point
6、l int x, y; lPOINT; lstack mystack; l栈的应用l进制间的转换lOJ上的题ID_1009l(STL_stack.cpp)list l#include using namespace std; llist mylist;lmylist.front();lmylist.push(x);lmylist.pop();llist应用OJ上合并果子l结构体的listltypedef struct Point l int x, y; lPOINT; llist mylist;(STL_list.cpp)vectorl#includelusing namespace std;lvector my;lmy.push_back(x);lmy.size();lmy.clear();lmyid这只是个介绍l更多详情,请访问lhttp:/www.stlchina.org/各位还有什么问题?l敬请提出lTHANK YOU!