分类: c/c
2013-08-05 17:37:53
阅读此文需要一些c 基础。
如果你不了解stl,那你就把如下内容当做简单介绍,如果你对其有一点了解,那你看过它之后可能会有不一样的认识,如果你很熟悉,那你就不要看了。
stl是标准c 中的一部分,全称为standard template library,它其实并不是c 语法的一部分,只是标准库提供了一些常用数据结构和算法。程序员在使用这些东西时就不需要重新编写,而只要直接使用就可以了。
stl由很多实现,比如hp stl, sgi stl等等,但标准c 的stl跟这些都不太一样,学习是需要注意。
stl并不仅仅是使用这么简单,如果你只会使用它,那么只能说你是了解它。如果了解其他一些语言的标准库,你可能会发现,stl中的东西并不多。所以,有时候,我们就要根据我们的需要来写一些容器,迭代器等等,对stl进行扩展,这些东西只要符合stl中的一些要求,我们自己写的类同样可以使用stl中的函数。
上边提到stl中的实现的东西并不多,我是这样认为的,c 在很大程度上是兼容c语言的(但不一样的地方也越来越多),实现这样一个库,效率是很重要的。但在stl中,很多东西是相互制约的,这也就意味着,实现的东西越多,它的效率就越低。权衡利弊,标准库中就没有加入很多东西,也正是因为这样,stl的效率还是很不错的,在大多数情况下下,使用stl都是一个好的选择(比如实现一个简单的vector,可能99%的人的实现都没有stl的效率高,与其浪费时间,还不如直接使用)。
说了这么多,来看一个很简单的例子,输入许多字符串,排序后输出。
还是比较简略的吧,只不过看起来有点繁琐,如果你学会使用后,看起来就会很条理的。
简单讲一下这段代码,把标准输入中的字符串用插入迭代器插入到vector容器中,使用std::sort进行排序,再把容器中的内容复制到标准输出,每个元素间以”\n”分隔。
差不多就这样了,好像带有很多个人色彩,写的也没有条理,总感觉少了点什么(如果有,请评论一下,谢谢),以后还要多写写,就这样吧。