stl简介-凯发app官方网站

凯发app官方网站-凯发k8官网下载客户端中心 | | 凯发app官方网站-凯发k8官网下载客户端中心
  • 博客访问: 125815
  • 博文数量: 11
  • 博客积分: 194
  • 博客等级: 入伍新兵
  • 技术积分: 190
  • 用 户 组: 普通用户
  • 注册时间: 2012-10-24 08:20
文章分类

全部博文(11)

文章存档

2013年(8)

2012年(3)

相关博文
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·
  • ·

分类: 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的效率高,与其浪费时间,还不如直接使用)。

说了这么多,来看一个很简单的例子,输入许多字符串,排序后输出。



  1. #include <iostream>
  2. #include <vector>
  3. #include <iterator>
  4. #include <algorithm>

  5. int main(int argc, char *argv[])
  6. {
  7.     std::vector<std::string> vs;

  8.     std::copy(std::istream_iterator<std::string>(std::cin),
  9.                 std::istream_iterator<std::string>(),
  10.                 std::insert_iterator<std::vector<std::string> >(vs, vs.begin()));
  11.     std::sort(vs.begin(), vs.end());
  12.     std::copy(vs.begin(), vs.end(), std::ostream_iterator<std::string>(std::cout, "\n"));

  13.     return 0;
  14. }

还是比较简略的吧,只不过看起来有点繁琐,如果你学会使用后,看起来就会很条理的。

简单讲一下这段代码,把标准输入中的字符串用插入迭代器插入到vector容器中,使用std::sort进行排序,再把容器中的内容复制到标准输出,每个元素间以”\n”分隔。

差不多就这样了,好像带有很多个人色彩,写的也没有条理,总感觉少了点什么(如果有,请评论一下,谢谢),以后还要多写写,就这样吧。

阅读(1899) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
")); function link(t){ var href= $(t).attr('href'); href ="?url=" encodeuricomponent(location.href); $(t).attr('href',href); //setcookie("returnouturl", location.href, 60, "/"); }
网站地图