C++初阶-STL简介

目录

 

1.什么是STL

2.STL的版本

3.STL的六大组件

4.STL的重要性

4.1在笔试中

4.2在面试中

4.3.在公司中

5.如何学习STL

6.总结和之后的规划



1.什么是STL

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

用简单易懂的话来说就是用模板实现数据结构和算法的库,我们在之前讲了顺序表、链表、二叉树等数据结构,这个库里面都包含,所以我们现在用STL就可以不用自己写数据结构和算法了,这样简化了我们的时间。

2.STL的版本

原始版本
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许
任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原
始版本一样做开源使用。 HP 版本--所有STL实现版本的始祖。不是C++始祖(始祖你猜,之后面试可能要考,如果不知道了就去找吧(doge))开发的。

首先我们需要了解一下开源和闭源,开源即开放源代码,这是一个很好的精神,免费的使用,但是这个版本规定如果你做了有效的修改你也需要进行开源,公布自己改变的地方!而闭源就不一样了,不能修改。开源和闭源都有各自的好处,开源虽然看似很好,但是可维护性不强,之后没有多少人会去维护的,但是闭源就有人来维护了。


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要阅读部分源代码,主要参考的就是这个版本。

我们常用的git/Liunx都是开源的,而Windows、mac、os都是闭源的。

3.STL的六大组件

空间适配器里面的allocator就是内存池,其中我们主要注意的是算法和容器(现阶段),因为容器涉及到数据结构的知识等等,而算法就涉及到我们之前的排序等等算法,总之注意的就是这几个。

4.STL的重要性

4.1在笔试中

(1)二叉树的层序打印

题目链接:把二叉树打印成多行_牛客题霸_牛客网

这些题目我们现在是不会做的(虽然之前写过),但是之后学完STL就会了。

(2)重建二叉树

题目链接:重建二叉树_牛客题霸_牛客网

(3)用两个栈实现一个队列

题目链接:用两个栈实现队列_牛客题霸_牛客网

这些之前我们基本上写过,但是都要把数据结构的基本上所有代码都拷贝过去很麻烦,但是现在我们学了C++中的STL后就会好一些了。

4.2在面试中

这里只提供一些面试中的题目,只要知道基本上是什么样就可以了。

4.3.在公司中

网上有句话说:“不懂STL,不要说你会C++”。STL是C++中的优秀作品,有了它的陪伴,许多底层
的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。

5.如何学习STL

学STL有三个境界:

第一境界:熟用STL;

第二境界:了解泛型技术的内涵与STL的学理乃至实作;

第三境界:扩充STL。

三个境界的总结就是:能用,明理,能扩展 。我们主要学到第二个境界就可以了,只要前两个境界学得好,第三个境界就没有问题。

为什么我们要扩充STL呢?

有些数据结构和算法在STL中未实现,所以需要扩充。

相当于爬->走->跑。

所以加油吧。

6.总结和之后的规划

STL在我们C++的学习至关重要,所以之后也就需要每一篇博客要听懂,但是更多的是自己能用,而不是简单的看,只能说C++本来是很难的,必须用实际的代码去学C++,和我之前自己写的日期管理系统一样,虽然有些不足,但是也要写出一些成果就可以了!

之后我将从容器的string和vector开始,但是后面又会加一些内容才讲模板进阶,而那些stack和queue的扩展内容可能需要之后再讲,到时候我会发起一项投票,因为到时候我可能需要学Liunx或者先把C++基本内容学完,所以需要讲C++扩展内容还是Liunx都需要额外的理解的,所以到时候再进行简单的投票吧!反正不会完全按照我的文件中的顺序来进行讲解,所以到时候还需要绕一些额外的知识(这些知识还没学,我也不懂)。

下节将讲解string了,这个string我们主要是学它的成员函数等等,需要进入这个网页:

https://legacy.cplusplus.com/reference/

建议先去学习一下这个文档的使用吧,之后会频繁用到的。

这讲不是来讲解知识的,这讲是为了后面的内容做铺垫的,关于string的内容,我可能需要两篇博客来进行讲解,因为它里面虽然在界面的函数少,但是几乎每一个成员函数都有重载函数,因为它比STL诞生得早,所以封装的函数太多了,但是不是每个函数都要掌握,主要知道一些重要函数的用法就可以了(具体下一节再讲)。string部分需要到4月30日前后才可以更新了哦。

 

 

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

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

相关文章

kivy android打包buildozer.spec GUI配置

这个适合刚刚学习kivyd的道友使用,后面看情况更新 代码 import tkinter as tk from tkinter import ttk, filedialog, messagebox, simpledialog import configparser import os import json # 新增导入class BuildozerConfigTool:def __init__(self, master):se…

MOOS-ivp使用(一)——水下机器人系统的入门与使用

MOOS-ivp使用(一)——水下机器人系统的入门与使用 MOOS-ivp(Marine Operational Oceanographic System for Intelligent Vehicle Planning)是专为水下机器人(如AUV)设计的开源框架。类似于ROS,…

电子病历高质量语料库构建方法与架构项目(智能质控体系建设篇)

引言 随着人工智能技术的迅猛发展,医疗信息化建设正经历着前所未有的变革。电子病历作为医疗机构的核心数据资产,其质量直接关系到临床决策的准确性和医疗安全。传统的病历质控工作主要依赖人工审核,存在效率低下、主观性强、覆盖面有限等问题。近年来,基于人工智能技术的…

react学习笔记4——React UI组件库与redux

流行的开源React UI组件库 material-ui(国外) 官网: http://www.material-ui.com/#/github: GitHub - mui/material-ui: Material UI: Comprehensive React component library that implements Googles Material Design. Free forever. ant-design(国内蚂蚁金服) 官网: Ant…

GPU集群搭建

1. 硬件规划与采购 GPU 服务器:挑选契合需求的 GPU 服务器,像 NVIDIA DGX 系列就不错,它集成了多个高性能 GPU。网络设备:高速网络设备不可或缺,例如万兆以太网交换机或者 InfiniBand 交换机,以此保证节点…

ZYNQ 纯PL端逻辑资源程序固化流程

ZYNQ 纯PL端逻辑资源程序固化 ZYNQ的程序固化流程比传统的FPGA固化流程复杂很多,Vivado生成的bit文件无法直接固化在ZYNQ芯片中。因为ZYNQ 非易失性存储器的引脚(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分的专用引脚。这些非易失性存储器由 PS …

[计算机科学#6]:从锁存器到内存,计算机存储的构建与原理

【核知坊】:释放青春想象,码动全新视野。 我们希望使用精简的信息传达知识的骨架,启发创造者开启创造之路!!! 内容摘要:在上一篇文章中,我们深入了解了计算机如…

如何删除Google Chrome中的所有历史记录【一键清除】

谷歌浏览器记录了用户访问过的网站。这方便了查找,但有时也需要清理。删除所有历史记录很简单,只要按照以下步骤操作。 1. 打开谷歌浏览器 首先要启动谷歌浏览器。点击右上角的三个点,进入主菜单。 2. 进入历史记录界面 在菜单中找到“历史…

关于浏览器对于HTML实体编码,urlencode,Unicode解析

目录 HTML实体编码 URL编码 Unicode编码 解析层次逻辑 为什么<script></script>不可以编码符号 为什么不能编码JavaScript:协议 为什么RCDATA标签中的都会被解析成文本 为什么HTML编码了<>无法执行 HTML实体编码 通过特殊语法&#xff08;<、>…

【数据分享】2020年中国高精度森林覆盖数据集(免费获取)

森林作为全球陆地生态系统的主体&#xff0c;分布面积广、结构复杂&#xff0c;承担着调节气候、维护生态安全、改善环境等方面的重要作用。我国的森林资源丰富&#xff0c;据《中国森林资源报告&#xff1a;2014—2018》统计&#xff0c;我国森林覆盖率已经达到23.04%。森林覆…

C语言学习之动态内存的管理

学完前面的C语言内容后&#xff0c;我们之前给内存开辟空间的方式是这样的。 int val20; char arr[10]{0}; 我们发现这个方式有两个弊端&#xff1a;空间是固定的&#xff1b;同时在声明的时候必须指定数组的长度&#xff0c;一旦确定了大小就不能调整的。 而实际应用的过程中…

【深度学习-Day 2】图解线性代数:从标量到张量,理解深度学习的数据表示与运算

Langchain系列文章目录 01-玩转LangChain&#xff1a;从模型调用到Prompt模板与输出解析的完整指南 02-玩转 LangChain Memory 模块&#xff1a;四种记忆类型详解及应用场景全覆盖 03-全面掌握 LangChain&#xff1a;从核心链条构建到动态任务分配的实战指南 04-玩转 LangChai…

首页数据展示

排版 现在做首页的排版&#xff0c;依旧是偷antd里面的东西 使用card包裹list的样式 import React from react import axios import { Card, Col, Row, List } from antd import { EditOutlined, EllipsisOutlined, SettingOutlined } from ant-design/icons; import { Avat…

使用Set和Map解题思路

前言 Set和Map这两种数据结构,在解决一些题上&#xff0c;效率很高。跟大家简单分享一些题以及如何使用Set和Map去解决这些题目。 题目链接 136. 只出现一次的数字 - 力扣&#xff08;LeetCode&#xff09; 138. 随机链表的复制 - 力扣&#xff08;LeetCode&#xff09; 旧…

尝试leaflet+webassemly

前言 笔者在github发现rust版本的leaflet&#xff0c;发现是用wasm-bindgen包装的&#xff0c;尝试使用一下 Issues slowtec/leaflet-rshttps://github.com/slowtec/leaflet-rs 正文 准备 新建一个react项目&#xff0c;安装rsw依赖 pnpm i -D vite-plugin-rsw cargo ins…

机器学习实战,天猫双十一销量与中国人寿保费预测,使用多项式回归,梯度下降,EDA数据探索,弹性网络等技术

前言 很多同学学机器学习时总感觉&#xff1a;“公式推导我会&#xff0c;代码也能看懂&#xff0c;但自己从头做项目就懵”。 这次我们选了两个小数据集&#xff0c;降低复杂度&#xff0c;带大家从头开始进行分析&#xff0c;建模&#xff0c;预测&#xff0c;可视化等&…

SQL数据库系统全解析:从入门到实践

一、数据库世界入门指南 在数字时代&#xff0c;数据就像新时代的石油&#xff0c;而数据库系统就是储存和管理这些宝贵资源的仓库。对于初学者来说&#xff0c;理解数据库的基本概念是迈入这个领域的第一步。 数据库本质上是一个有组织的数据集合&#xff0c;它允许我们高效…

【大模型】图像生成:StyleGAN3:生成对抗网络的革命性进化

深度解析StyleGAN3&#xff1a;生成对抗网络的革命性进化 技术演进与架构创新代际技术对比StyleGAN3架构解析 环境配置与快速入门硬件要求安装步骤预训练模型下载 实战全流程解析1. 图像生成示例2. 自定义数据集训练3. 潜在空间操作 核心技术深度解析1. 连续信号建模2. 傅里叶特…

PHP-Cookie

Cookie 是什么&#xff1f; cookie 常用于识别用户。cookie 是一种服务器留在用户计算机上的小文件。每当同一台计算机通过浏览器请求页面时&#xff0c;这台计算机将会发送 cookie。通过 PHP&#xff0c;您能够创建并取回 cookie 的值。 设置Cookie 在PHP中&#xff0c;你可…

“Everything“工具 是 Windows 上文件名搜索引擎神奇

01 Everything 和其他搜索引擎有何不同 轻量安装文件。 干净简洁的用户界面。 快速文件索引。 快速搜索。 快速启动。 最小资源使用。 轻量数据库。 实时更新。 官网&#xff1a;https://www.voidtools.com/zh-cn/downloads/ 通过网盘分享的文件&#xff1a;Every…