企业设计网站公司有哪些,php个人网站简洁,四维码制作网站,中国最新军事新闻最新消息个人主页 #xff1a; zxctscl 如有转载请先通知 STL 1. 什么是STL2. STL的版本3. STL的六大组件4. STL的重要性5. 如何学习STL6. STL的缺陷 1. 什么是STL
STL(standard template libaray-标准模板库)#xff1a;是C标准库的重要组成部分#xff0c;不仅是一个可复用的组件… 个人主页 zxctscl 如有转载请先通知 STL 1. 什么是STL2. STL的版本3. STL的六大组件4. STL的重要性5. 如何学习STL6. STL的缺陷 1. 什么是STL
STL(standard template libaray-标准模板库)是C标准库的重要组成部分不仅是一个可复用的组件库而且是一个包罗数据结构与算法的软件框架。
STL是C标准库的一部分像之前的iostream也是标椎库的一部分不能任务STL里面包含iostream。它们的关系是同级的。
2. STL的版本 原始版本 Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本本着开源精神他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码无需付费。唯一的条件就是也需要向原始版本一样做开源使用。 HP 版本–所有STL实现版本的始祖。 P. J. 版本 由P. J. Plauger开发继承自HP版本被Windows Visual C采用不能公开或修改缺陷可读性比较低符号命名比较怪异。 RW版本 由Rouge Wage公司开发继承自HP版本被C Builder 采用不能公开或修改可读性一般。 SGI版本 由Silicon Graphics Computer SystemsInc公司开发继承自HP版 本。被GCC(Linux)采用可移植性好可公开、修改甚至贩卖从命名风格和编程 风格上看阅读性非常高。在后面学习STL要阅读部分源代码主要参考的就是这个版本。
3. STL的六大组件 STL包含六大组件分别是 容器Containers容器是STL中最重要的组件之一。它提供了各种数据结构如数组、链表、堆、映射等用于存储和组织数据。常用的容器包括vector、list、deque、set、map等。 算法Algorithms算法是STL的核心组件之一提供了一系列的常用算法如排序、查找、合并、拷贝等。开发者可以直接调用这些算法在容器上进行各种操作。 迭代器Iterators迭代器是STL中非常重要的概念用于遍历容器中的元素。迭代器提供了一种统一的方式来访问和操作容器中的元素使得算法可以独立于具体容器的实现。 配接器Adapters适配器是STL中用于扩展和修改容器或算法功能的组件。STL提供了多种适配器如stack、queue、priority_queue等可以通过适配器将容器或算法的接口进行转换以满足特定的需求。 空间配置器Allocators分配器是STL中用于内存管理的组件。STL的容器在内部使用分配器来动态分配和释放内存开发者可以通过自定义分配器对内存分配进行优化或扩展。 仿函数Functors仿函数是STL中用于封装函数对象的组件。STL的算法中经常需要接受一个函数对象作为参数用于指定具体的操作。仿函数实际上是一种重载了函数调用操作符的类可以像函数一样调用。
总的来说STL的六大组件提供了一套完整的工具箱可以帮助开发者快速地实现各种常用的数据结构和算法提高开发效率和代码的可重用性。
4. STL的重要性
在一些笔试题目里面就有就像下面这题 用C语言代码可能是c代码的两倍 在面试里面也有相关的题目
网上有句话说“不懂STL不要说你会C”。STL是C中的优秀作品有了它的陪伴许多底层的数据结构以及算法都不需要自己重新造轮子站在前人的肩膀上健步如飞的快速开发。
5. 如何学习STL 简单总结一下学习STL的三个境界1. 使用2. 明理3. 扩展 。 前面两个走好了才能走第三个。
6. STL的缺陷
STL库的更新太慢了。这个得严重吐槽上一版靠谱是C98中间的C03基本一些修订。C11出来已经相隔了13年STL才进一步更新。STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的。STL极度的追求效率导致内部比较复杂。比如类型萃取迭代器萃取。STL的使用会有代码膨胀的问题比如使用vector/vector/vector这样会生成多份代码当然这是模板语法本身导致的。
有问题请指出大家一起进步吧