名表网站网站设计和经营
news/
2025/9/24 6:31:00/
文章来源:
名表网站,网站设计和经营,东莞网站建设制作厂,湖南网站seo在 C 语言中#xff0c;很多东西都是由我们自己去实现的#xff0c;例如自定义数组#xff0c;线程文件操作#xff0c;排序算法等等#xff0c;有些复杂的东西实现不好很容易留下不易发现的 bug。而 C为使用者提供了一套标准模板库 STL,其中封装了很多实用的容器#xf… 在 C 语言中很多东西都是由我们自己去实现的例如自定义数组线程文件操作排序算法等等有些复杂的东西实现不好很容易留下不易发现的 bug。而 C为使用者提供了一套标准模板库 STL,其中封装了很多实用的容器使用者使用容器的时候就不需要去注意代码的细节实现使用容器也会更加安全和高效。 容器的实现就是靠模板类去实现的例如 C中的动态数组容器 vector它其实就是一个类类中维护了一块地址然后类中的函数就可以定义为一些数组的行为例如添加元素删除元素等等同时相比于 C 语言中的数组使用容器因为是类在维护所以类中一般会进行安全性判断对一些不安全的操作会进行规避例如C 语言中的数组 a 可以访问 a[-1],但是对于 C中的容器 a访问 a[-1]就会被拒绝. C的容器 分别为算法、容器、函数、 迭代器 。 STL 的优点 1.功能强大、代码精致。STL 由惠普实验室的无数大牛们开发设计精巧功能强大集成了 优秀的算法。 2.高可重用性。 STL 广泛使用模板泛型编程代码具有高度的复用性。 3.高性能、工业强度。 STL 提供的算法具有工业强度高性能用它可开发出性能高效的应用程序。 4.开源跨平台. STL 跨平台而且开源开发者可以很容易借鉴与扩展。 STL 的版本 1.HP STL HP STL 是 Alexandar Stepanov 在惠普 Palo Alto 实验室工作时与 Meng Lee 合作完成的。 HP STL 是 C STL 的第一个实现版本而且是开放源码。其它版本的 C STL 一般是以 HP STL 为蓝本实现出来的。 2.SGI STL 由 Silicon Graphics Computer Systems 公司参照 HP STL 实现主要设计者仍然是 STL 之父 Alexandar Stepanov被 Linux 的 C编译器 GCC 所采用。SGI STL 是开源软件源码可读性甚高。 3.STLport 为了使 SGI STL 的基本代码都适用于 VC和 C Builder 等多种编译器俄国人 Boris Fomitchev 建立了一个 free 项目来开发 STLport此版本 STL 是开放源码的。 4.P.J.Plauger STL 由 P.J.Plauger 参照 HP STL 实现出来被 Visual C编译器所采用但不是开源的。 5.Rouge Wave STL 由 Rouge Wave 公司参照 HP STL 实现用于 Borland C编译器中这个版本的 STL 也不 是开源的。 STL 的六大组件 1、容器Containers各种数据结构如 Vector,List,Deque,Set,Map,用来存放数据STL 容 器是一种 Class Template,就体积而言这一部分很像冰山载海面的比率。 2、算法Algorithms各种常用算法如 Sort,Search,Copy,Erase,从实现的角度来看STL 算法是一种 Function Templates。 3、迭代器Iterators扮演容器与算法之间的胶合剂是所谓的“泛型指针”共有五种类 型以及其它衍生变化从实现的角度来看迭代器是一种将Operators*,Operator-,Operator,Operator–等相关操作予以重载的 Class Template。所有STL 容器都附带有自己专属的迭代器只有容器设计者才知道如何遍历自己的元素原生指针Native pointer也是一种迭代器。 4、仿函数Functors 行为类似函数可作为算法的某种策略Policy,从实现的角度来看仿函数是一种重载了 Operator()的 Class 或 Class Template。一般函数指针可视为狭义的 仿函数。 5、配接器适配器Adapters一种用来修饰容器Containers或仿函数Functors 或迭代器Iterators接口的东西例如STL 提供的 Queue 和 Stack虽然看似容器其实只能算是一种容器配接器因为 它们的底部完全借助 Deque所有操作有底层的 Deque 供应。 改变 Functor 接口者称为 Function Adapter;改变 Container 接口者称为 Container Adapter; 改变 Iterator 接口者称为 Iterator Adapter。配接器的实现技术很难一言蔽之必须逐一分析。 6、分配器Allocators负责空间配置与管理从实现的角度来看配置器是一个实现了动态空间配置、空间管理、空间释放的 Class Template。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/915082.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!