栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C++之<STL>简介

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++之<STL>简介

目录
  • 前言
  • 1、什么是STL
  • 2、 STL的版本
  •  3、STL六大组件
  • 4、STL的重要性
  • 5、如何学好STL
  • 7、STL的缺陷

前言

这章简介过去后,我们将开始正式的进行 STL的学习!!!


1、什么是STL

STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架…


2、 STL的版本

STL距今共有四个版本,分别如下:

  1. HP版本(原始版本)
  • Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP版本–所有STL实现版本的始祖
  1. P. J. 版本
  • 由P. J. Plauger开发,继承自HP版本,被(微软)Windows Visual C++采用,不能公开或修改,缺陷:可读性比较低,符号命名比较怪异
  1. RW版本
  • 由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般
  1. SGI版本
  • 由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高

 3、STL六大组件

总结:

  • 六大组件中的算法我们已经在数据结构中的排序篇章学完了,STL已经封装好
  • 容器中的大部分也学了,vector和list就是我们数据结构里面学的线性表
  • 配接器中的栈和队列我们也学过了

4、STL的重要性
  • 在笔试中(OJ题)
    【二叉树层序遍历】:如果没有STL,则需要自己造一个栈来进行实现
    【重建二叉树】:这个也一样,必须自己造一个栈来进行实现,或者使用递归求解
    【二个栈实现队列】:跟上面的题一样,需要用到栈

总结:如果没有STL,那我们必须手造一个轮子来进行题求解

  • 在面试中

  • 在工作中
    网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发…


5、如何学好STL
  • 第一境界:熟用STL
  • 第二境界:了解泛型技术的内涵与STL的学理乃至实作
  • 第三境界:扩充STL

7、STL的缺陷
  1. STL库的更新太慢了。这个得严重吐槽,上一版靠谱是C++98,中间的C++03基本一些修订。C++11出来已经相隔了13年,STL才进一步更新
  2. STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的
  3. STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取
  4. STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/953630.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号