【C++】标准模板库 STL 简介


  • 🧑‍🎓个人主页:简 料

  • 🏆所属专栏:C++

  • 🏆个人社区:越努力越幸运社区

  • 🏆简 介:简料简料,简单有料~在校大学生一枚,专注C/C++/GO的干货分享,立志成为您的好帮手 ~


C/C++学习路线 (点击解锁)
❤️C语言
❤️初阶数据结构与算法
❤️C++
❤️高阶数据结构
❤️Linux系统编程与网络编程

文章目录


🏆前言

🌀 STL是C++标准库的一部分,它在C++程序中扮演着重要的角色。它使用模板(template)来实现各种数据结构,包括序列容器、关联容器、无序容器等,并提供相应的迭代器、算法、适配器、仿函数等部件。这些部件可以用来实现各种复杂的数据结构和算法,从而大大简化了程序员的编程工作。
🌀 在C++中,stl的位置非常核心,它几乎渗透在C++程序的角角落落里。无论是开发底层系统,还是开发上层应用,stl都扮演着不可或缺的角色。它不仅提供了高效的数据结构和算法,还提供了一种标准化的编程模式,使得程序具有良好的可读性、可维护性和可重用性。
🌀 总之,stl在C++中的位置非常重要,它是C++标准库的核心组成部分,为程序员提供了强大的工具和资源,帮助程序员编写高质量、高效率的程序。


本章将带你快速了解STL,接下来就来认识认识一下STL吧~


🧑‍🎓什么是STL

前言部分大致说的差不多了,这里就不多说了~

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


🧑‍🎓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 Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习STL要阅读部分源代码,主要参考的就是这个版本。

🧑‍🎓STL的六大组件

  • STL的六大组件分别是:
  1. 容器(containers):如vector、list、deque、set、map等,用来存放数据。从实现的角度看,stl容器是一种类模板。
  2. 算法(algorithms):如sort、search、copy、erase等。从实现的角度看,stl算法是一种函数模板。
  3. 迭代器(iterators):扮演容器与算法之间的胶合剂,是所谓的"泛型指针"。从实现的角度看,迭代器是一种将operator*、operator->、operator++、operator--等指针相关操作予以重载的类模板。
  4. 仿函数(functors):行为类似函数,可以作为算法的某种策略。仿函数是一种重载了operator()的类或类模板。
  5. 适配器(adapters):一种用来修饰容器、仿函数、迭代器接口的东西。
  6. 配置器(allocators):负责空间配置与管理。
  • 这六大组件可以彼此组合套用,以实现更复杂的功能。

🧑‍🎓STL的重要性

  • 在笔试中:会有几道算法题,这时候,使用C++的小伙伴就不得不使用STL来提高效率了~
  • 在面试中:面试官经常会问到关于STL的知识,所以熟练STL的小伙伴可是加分项噢~
  • 在工作中:网上有句话说:"不懂STL,不要说你会C++"。STL是C++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。

🧑‍🎓如何学习STL

摘:

简单总结一下:学习STL的三个境界:能用,明理,能扩展 。


🧑‍🎓STL的缺陷

  1. STL库的更新太慢了。这个得严重吐槽,上一版靠谱是C++98,中间的C++03基本一些修订。C++11出来已经相隔了13年,STL才进一步更新。
  2. STL现在都没有支持线程安全。并发环境下需要我们自己加锁。且锁的粒度是比较大的。
  3. STL极度的追求效率,导致内部比较复杂。比如类型萃取,迭代器萃取。
  4. STL的使用会有代码膨胀的问题,比如使用vector/vector/vector这样会生成多份代码,当然这是模板语法本身导致的。

🏆写在最后

💝本章主要是给大家介绍C++当中的标准模板库(STL),只要你用C++,那必然脱离不了STL的存在,他的重要性是毋庸置疑的。最后用上文的一段文字来结尾:网上有句话说:"不懂STL,不要说你会C++"。STLC++中的优秀作品,有了它的陪伴,许多底层的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。😊


❤️‍🔥后续将会继续输出有关C++的文章,你们的支持就是我写作的最大动力!

感谢阅读本小白的博客,错误的地方请严厉指出噢~

相关推荐
!停1 分钟前
C语言顺序表
c语言·开发语言
你怎么知道我是队长5 分钟前
python---新年烟花
开发语言·python·pygame
智算菩萨10 分钟前
【Python机器学习】主成分分析(PCA):高维数据的“瘦身术“
开发语言·python·机器学习
stars-he15 分钟前
单相可控整流电路的MATLAB仿真设计(2)
开发语言·matlab
hd51cc17 分钟前
MFC文件操作
c++·mfc
春蕾夏荷_7282977251 小时前
Sockets-2.3.9.9 UDP使用实例
c++·udp
AC赳赳老秦1 小时前
政务数据处理:DeepSeek 适配国产化环境的统计分析与报告生成
开发语言·hadoop·spring boot·postgresql·测试用例·政务·deepseek
xlxxy_2 小时前
abap 批量创建供应商
运维·开发语言·sap·abap·pp·mm
GetcharZp2 小时前
拒绝硬编码!C++ 配置文件管理神器 yaml-cpp 实战指南
c++
独自破碎E2 小时前
Java是怎么实现跨平台的?
java·开发语言