C++STL简介

这篇具有很好参考价值的文章主要介绍了C++STL简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.STL简介

1.1.STL的概念

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

1.2.STL的版本

  1. 原始版本:Alexander StepanovMeng Lee两人在惠普实验室完成了STL的原始版本,本着开源精神,他们声明允许任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原始版本一样做开源使用。原始版本也叫HP版本,是所有STL实现版本的始祖。

  2. P.J.版本:由P.J.Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改。缺陷是,可读性比较低,符号命名比较怪异。

  3. RW版本:由Rouge Wage公司开发,继承自HP版本,被C++ Builder采用,不能公开或修改,可读性一般(该编译器后来被微软的VS打败,已经没落)。

  4. SGI版本:由Silicon Graphics Computer SystemsInc公司开发,继承自HP版本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格上看,阅读性非常高。后面学习STL要阅读部分源代码,主要参考的就是这个版本。

2.STL的六大组件

STL可以划分为六个组件:

补充:“容器”实际上就是“数据结构”。

3.STL的学习境界

  1. 能熟用STL语法

  2. 明白STL的底层原理

  3. 能够根据需求来自主拓展、扩充STL

4.STL的缺陷

  1. 更新速度:这里值得吐槽的是STL的更新速度,比较靠谱的上一版本是C++98C++03是一些基本修订,13年后C++11才推出,STL才得以进一步更新。

  2. 线程安全:STL到现在都没有支持线程安全,并发环境下需要自己加锁,而且锁的粒度比较大。

  3. 过于效率:STL太追求效率了,导致内部比较复杂,例如:类型萃取、迭代器萃取等。

  4. 代码膨胀:STL的使用会有代码膨胀的问题,这是模板语法本身导致的。文章来源地址https://www.toymoban.com/news/detail-635550.html

到了这里,关于C++STL简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【whale-starry-stl】01天 list学习笔记

    std::bidirectional_iterator_tag 是 C++ 标准库中定义的一个迭代器类型标签,用于标识支持双向遍历的迭代器类型。 在 C++ 中,迭代器是一种泛型指针,用于遍历容器中的元素。迭代器类型标签用于标识迭代器的特性,从而在算法中选择合适的迭代器类型。 std::bidirectional_iterator_tag

    2024年02月09日
    浏览(27)
  • C/C++|物联网开发入门+项目实战|指针|嵌入式C语言高级|C语言内存空间的使用-学习笔记(9)

    参考: 麦子学院-嵌入式C语言高级-内存空间 内存类型资源地址、门牌号的代名词 指针:地址的代名词 指针变量:存放指针这个概念的盒子 *P char *p *p; C语言娟译器对指针这个特殊的概念,有2个疑问? 1、分配一个盒子,盒子要多大? 在32bit系统中,指针就4个字节 2、盘子里存放

    2023年04月22日
    浏览(43)
  • c++学习笔记-STL案例-机房预约系统4-管理员模块

    前言 衔接上一篇“c++学习笔记-STL案例-机房预约系统3-登录模块”,本文主要设计管理员模块,从管理员登录和注销、添加账号、显示账号、查看机房、清空预约五个功能进行分析和实现。 目录 7 管理员模块 7.1 管理员登录和注销 7.1.1 构造函数 ​编辑7.1.2 管理员子菜单 7.1.

    2024年01月19日
    浏览(34)
  • C++进阶语法——STL 标准模板库(下)(Standard Template Library)【学习笔记(七)】

    1、迭代器 迭代器可以将任意的容器抽象成一个序列,可以使用迭代器遍历容器中的元素 迭代器设计的目的是为了解决容器与算法之间的耦合问题,与指针类似,可以通过迭代器访问容器中的元素 迭代器的声明方式为: 容器类型::iterator 变量名称 , 可以理解为一个普通的指

    2024年02月06日
    浏览(39)
  • 【C++STL精讲】初识STL&STL简介

    🌸作者简介: 花想云 ,在读本科生一枚,致力于 C/C++、Linux 学习。 🌸 本文收录于 C++系列 ,本专栏主要内容为 C++ 初阶、C++ 进阶、STL 详解等,专为大学生打造全套 C++ 学习教程,持续更新! 🌸 相关专栏推荐: C语言初阶系列 、 C语言进阶系列 、 数据结构与算法 从本章开

    2023年04月27日
    浏览(25)
  • C/C++|物联网开发入门+项目实战|空间读写|非字符空间|返回值内部实现|嵌入式C语言高级|C语言函数的使用(2)-学习笔记(12)

    参考: 麦子学院-嵌入式C语言高级-C语言函数的使用 空间的读写 void fun(char *p); const char *p 只读空间,只为了看 char *p;该空间可能修改,几乎都要变 strcpy(); 定义:char *strcpy(char *dest,const char *src); sprintf(); 作用 1、修改 int * short * long * 2、空间传递 2.1 子函数看看空间里的情况

    2023年04月22日
    浏览(46)
  • PCIE 学习笔记(入门简介)

    书到用时方恨少啊,一年前学PCIE的笔记,再拿出来瞅瞅。发到博客上,方便看。 PCIE和PCI的不同 PCIE采用差分信号传输,并且是dual-simplex传输——每条lane上有TX通道和RX通道,所以每条lane上的信号是4条。PCI是同步时钟、并行传输。 PCIE是端到端的传输,一条链路上只能有两个

    2024年02月06日
    浏览(56)
  • Kafka 简介 + 学习笔记

    先说明消息队列是什么: 亚马逊: 消息队列是一种异步的服务间通信方式,适用于微服务架构。消息在被处理和删除之前一直存储在队列上。每条消息仅可被一位用户处理一次。消息队列可被用于分离重量级处理、缓冲或批处理工作以及缓解高峰期工作负载。 我的理解:

    2024年02月11日
    浏览(20)
  • C/C++|物联网开发入门+项目实战|函数输入与输出|值传递|地址传递|连续空间的传递|嵌入式C语言高级|C语言函数的使用-学习笔记(11)

    参考: 麦子学院-嵌入式C语言高级-C语言函数的使用 一堆代码的集合,用一个标签去描述它 复用化,降低冗余度 标签 ------ 函数名 函数和数组都属于内存空间,函数具备3要素: int *p; int a[100]; 1、函数名(地址) 2、输入参数 3、返回值 在定义函数时,必须将3要素告知编译器

    2023年04月20日
    浏览(41)
  • 机器学习笔记 - 局部敏感哈希简介

            局部敏感散列  (LSH) 技术,可显著加快对数据的邻居搜索或近似重复检测。例如,这些技术可用于以惊人的速度过滤掉抓取网页的重复项,或者从地理空间数据集中对附近点执行近恒定时间查找。          让我们快速回顾一下其他类型的哈希函数,哈希函

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包