STL是C++标准模板库,当时学的时候含糊不清,并不明白这到底是个什么东西,到有个什么道理,怎么着它就能这样用了呢?怎么着它就这么简单呢?这个问题直到前两天我才终于搞明白,那是在C++课程学完了类之后,对与C++有了全新的理解之后,我才发现后面有一个章节讲的就是模板,这才让我如梦初醒般的搞清楚了其中道理(这也好像是说的过分,连源代码都没有看一看也好意思说搞清楚道理),反正就是明白了它怎么来的,这样再使用就感觉有了根据,更加清晰了。
但就算当时百思不得其解,也我也是只能将就将就,糊弄着用了。但也不得不说,学会了使用STL之后,在很多题上面都节约了不少时间,把一些的东西搞得简单了。
STL中主要有三个组件:容器(container)、迭代器(iteratoe)、算法(algorithm)。但我们并不是按这个讲的,而是主要学了其中几个重要的容器及其使用方法。
<vector> 向量用来代替数组的最佳选择,可以用作动态数组,push_back()、pop_back()在向量尾添加、删除元素,v[i]与数组使用一样,还有v.empty()、v.size()函数可以判断向量大小,最好用的是v.erase()可以对数组中间元素删除。
<stack> 栈先入后出 只能对栈顶元素操作,push()、pop()函数进行插入、移除元素。
<queue> 队列先入先出 front()、back()函数返回队头、队尾元素,push()、pop()函数插入队列尾和移除队列头元素。特殊的,还有一个 priority_queue(优先队列)。
<map> 映射,是一对一映射,将两个类型关联,其中<multimap>可以实现一对多的映射。
<set> 集合可以根据特定的排列顺序,将元素排序,其中<multiset>允许重复值。
<string> 字符串 string提供了许多函数对字符串操作,比char数组简单得多。
<sort> 排序sort只是<algorithm>里的一个函数,排序原理应该是快速排序的方法,速度快且方便,而且comp参数可以通过重载,实现结构体等的各种排序。