1.STL是什么?
STL是Standard Template Library的简称,中文名标准模板库
。简单来说就是封装好的一些组件。主要有容器(containers)和算法(algorithms)
两部分。
2.C with STL
是什么?
字面意思,一般来说程设竞赛或程设考试用得上的C++部分其实就是C+STL,有了《C语言程序设计》和《数据结构》这两门课程的基础,学习C+STL并非难事。
3.为什么要学STL呢?
方便。比如你要实现一个链式队列,以及它的一系列功能,你需要敲几十乃至上百行代码,还要投入精力debug,可在STL里,给你做好现成的queue你用不用?现成的快排你用不用?平均复杂度O(nlogn)
的排序只要几句话,手写一个冒泡也得好几行吧?还卡时。
4.我有兴趣了,怎么学呢?
正确的学习姿势,以及,熟能生巧。
下面步入主题。
1.swap
(交换两元素值,在algorithm下,用法:swap(a,b);)
交换两元素的值在C语言课上作为指针讲解的典例。
int a=1,b=2;
swap(a,b);
//此时a=2,b=1
2.sort
(对序列进行排序,在algorithm下)
//数组排序:
int a[10]={1,3,5,7,9,2,4,6,8,0};
sort(a,a+10);
//如果用的是vector,这样写
vector<int> a;
sort(a.begin(),a.end());//之后会提到vector,这里不做解释
//默认由小到大排序,当然我们可以重载排序的顺序
bool cmp(int a,int b)//从大到小排序
{
return a>b;
}
//然后
sort(a,a+10,cmp);
sort(a.begin(),a.end(),cmp);
使用sort是一个越用越活的过程,你要喜欢,还能用:
sort(a,a+10,greater<int>());
sort(a.begin(),a.end(),less<int>());
sort的平均时间复杂度是O(nlogn)
。
3.reverse
(翻转序列,在algorithm下ÿ