STL好难(1):STL简介

news2024/11/26 20:28:58

目录

1. 什么是STL:

2. STL的版本:

(1)原始版本

(2)P.J.版本

(3)RW版本

(4)SGL版本

3. STL的六大组件:

4. SLT的重要性

(1)笔试中:

(2)在面试中:

5.如何学习STL?

6.STL的缺陷


1. 什么是STL:

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

2. STL的版本:

(1)原始版本

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

(2)P.J.版本

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

(3)RW版本

由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一般。

(4)SGL版本

由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。

我们后面学习STL要阅读部分源代码,主要参考的就是这个版本。

3. STL的六大组件:

 我们先会去学算法和容器,容器大多数就是我们学习的数据结构

4. SLT的重要性

(1)笔试中:

二叉树层序打印

重建二叉树

两个栈实现一个队列

像这样的题,我们直接使用STL库来做会比较容易,就不需要我们自己去写那些数据结构之类的

在一些蓝桥杯的比赛中,一般都是C++组、Java组,就没有C语言组,这就是因为C语言缺少像STL这样的库,写起来需要从底层慢慢搭建,比较繁琐

(2)在面试中:

比如以下问题:

你项目里有空间配置器,你给我讲讲空间配置器和智能指针有什么联系吗?
智能指针了解多少,讲讲auto_ptr.
为什么C++11删掉了auto_ptr,他有什么缺陷吗?
C++11里有nullptr,这和NULL有什么区别吗?
讲讲vector和list,再讲讲两个区别

5.如何学习STL?

6.STL的缺陷

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513447.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

医院医学影像系统PACS,使用手册和操作说明书。

首先,系统可实现检查预约、病人信息登记、计算机阅片、电子报告书写、胶片打印、数据备份等一系列满足影像科室日常工作的功能,并且由于影像数字化存储,用户可利用影像处理与测量技术辅助诊断、方便快捷地查找资料或利用网络将资料传输至临床科室,还可与…

femu使用记录

femu使用记录 环境搭建libnvme:libnvme.so.1: cannot open shared object file: No such file or directory调试方法 Briefly speaking, FEMU is a fast, accurate, scalable, and extensible NVMe SSD Emulator. Based upon QEMU/KVM, FEMU is exposed to Guest OS…

《花雕学AI》Poe 上的四种 AI 机器人,你该怎么选?ChatGPT、Sage、Claude 和 Dragonfly对比

虽然 ChatGPT 是一项革命性的技术,但它作为一个消费产品却有点失败。你可能会花很长时间等待 OpenAI 的聊天机器人加载,或者根本无法使用它,因为它太大了。就算你能用上它,它也很缓慢,而且它的界面也很丑陋。它甚至没有…

连接(基础版)

QUESTION ONE # Write your MySQL query statement below select unique_id,name from EmployeeUNI right join Employees on EmployeeUNI.id Employees.id 这题很显然有两张表需要进行连接,在我们确定完要取的字段后,就需要连接两张表,…

鸿蒙Hi3861学习十二-Huawei LiteOS-M(osXX与LOS_XX)

一、LOS_XX是什么 LOS_XX是LiteOS_M或LiteOS_A内核提供的接口。例如:LOS_TaskCreate、LOS_TaskCreate、LOS_SemCreate等。因为LiteOS_M和LiteOS_A是针对不同的内核,所以LOS_XX在实现上也是有所不同的。也就是说LOS_XX跟具体的内核类型是有关系的。 这里只…

伸展树详解

伸展树的概念 伸展树(Splay Tree)是仅依靠局部性原理和局部平衡分析,从而实现高效的自适应平衡树结构。是一种二叉查找树,其核心思想是将最近访问的节点旋转到根节点。每次进行访问、插入、删除等操作时,都会选择与之…

【云计算】Hadoop集群安装

文章目录 前言一、环境二、安装虚拟机及配置配置网络 三、安装Ubuntu及配置下载ISO镜像VMware安装UbuntuUbuntu配置:配置结果IP免密登录 JAVA安装hadoop安装:文件的作用core-site.xml:core-site.xmlyarn-site.xmlmapred-site.xml 修改配置&am…

【Linux网络】网络层IP和数据链路层

文章目录 1、网络层IP1.1 认识网络层1.2 IP报文格式和IP报文切片1.3 网段划分以及路由 2、数据链路层2.1 以太网帧格式2.2 ARP协议 3、其它重要协议或技术3.1 DNS技术3.2 ICMP协议3.3 NAT技术3.4 NAT和代理服务器 1、网络层IP 1.1 认识网络层 浅谈一下各层 应用层:…

JBoss 5.x/6.x 反序列化漏洞(CVE-2017-12149)复现

文章目录 一.前言二.影响版本三.环境搭建四.漏洞复现1.编写反弹shell的命令2.序列化数据生成3.发送POC 一.前言 该漏洞为 Java反序列化错误类型,存在于 Jboss 的 HttpInvoker 组件中的 ReadOnlyAccessFilter 过滤器中。该过滤器在没有进行任何安全检查的情况下尝试…

基于AT89C51单片机的温度计设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87773445 源码获取 主要内容: 设计一个简易温度计;要求电路实现如下功能: 设计通过单片机和数码管、led灯等组成,可…

巧用千寻位置GNSS软件| 一文学会曲线样

曲线放样是圆曲线形放样工具,在线路初堪、临时设计、临时放样采集坐标等作业过程中,曲线放样更加简单和方便。千寻位置GNSS软件提供了三种线型文件编辑放,分别是直线、圆曲线 和缓曲线。圆曲线说明:线型上任意一点的曲率、半径都相同;缓曲线说…

【剧前爆米花--爪哇岛寻宝】网络编程一些概念以及Java实现网络编程流程

作者:困了电视剧 专栏:《JavaEE初阶》 文章分布:这是一篇关于网络初识的文章,在这篇文章中剖析了网络编程的一些概念以及用Java实现网络编程的一些流程,希望对你有所帮助! 目录 网络编程 含义和一些概念 …

sysMaster: 全新1号进程实现方案,秒级自愈,保障系统全天在线

认识 1 号进程和 sysMaster 在 Linux 操作系统中,1 号进程是 init 进程,它是所有其他进程的祖先进程。init 进程是系统启动时第一个被创建的进程,它负责启动和管理其他所有进程,并在系统关机时关闭它们。在现代 Linux 系统中&…

数组--part 4--长度最小的子数组(力扣299/904/76)

文章目录 算法基本思想leetcode 209 长度最小的子数组leetcode 904 水果成篮leetcode 76 最小覆盖子串 算法基本思想 首先对于滑动窗口,题目可以先去看看leetcode 209 进行相关的了解后,再来书写代码。 首先我们的第一想法肯定就是暴力解法&#xff1a…

html实现汉诺塔小游戏

文章目录 1.设计来源汉诺塔由来1.1 主界面1.2 游戏规则1.3 游戏完成界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载 作者:xcLeigh 文章地址:https://blog.csdn.net/weixin_43151418/article/details/130606736 html实现汉诺塔小游戏源码 汉诺塔&…

数据结构-链表(详解)

前言:内容包括:链表的分类,无头单向非循环链表的增删查改的实现,带头双向循环链表的增删查改的实现 目录 链表的分类 1. 单向或者双向 ​编辑 2. 带头或者不带头 3. 循环或者非循环 无头单向非循环链表: ​编辑…

造梦日记 Printidea 用户手册

*Hi 造梦日记* 欢迎来到造梦日记的空间~ 造梦日记Printidea是一款基于AI算法、输入文字或图片即可生成高质量图片的工具,由西湖大学深度学习实验室和西湖心辰联合出品,超强算力,0.8秒出图,目前支持微信小程序、网页端…

边缘计算盒子的特点?边缘计算盒子适用于什么场景

边缘计算盒子(Edge Computing Box)是一种用于边缘计算的硬件设备,它通常是一个小型的计算设备,具备一定的计算能力和存储资源,并且能够连接到网络。边缘计算盒子的主要目的是在物联网(IoT)和分布…

续ShaderEditor、Inspector之后又一成功爆品,2周260+单!

01 前言 大家好,我是98K!五一前,我上架 Cocos Store 的『高性能割草框架』增加 Cocos Creator 2.4.x 引擎,已经支持的老铁可免费更新! 后续的更新计划是:完善2D游戏案例、增加3D案例、支持RVO和群聚&#…

Android WebView 长按弹出的文本选择器如何监听滑动和如何弹出完全自定义的菜单栏

在这次改版中,h5小伙伴与我沟通说要把长按选择改用成原生的拉选框,之前我也没搞过呀,开始研究吧。 怎么研究呀,当然是百度一下了。 百度了一天总结如下: 好多文章都是告诉你如何在系统的基础上来修改自己的文字和点…