完整教程:【C++】STL简介+编码表+string引入

news/2025/9/24 17:53:27/文章来源:https://www.cnblogs.com/ljbguanli/p/19109709

完整教程:【C++】STL简介+编码表+string引入

目录

一 STL简介

1 什么是STL

2. STL的版本

3. STL的六大组件

4. STL的重要性

5. 如何学习STL

二 编码表

1 编码的定义

2 ASCII表

3 string类

4 变长编码集


一 STL简介


1 什么是STL

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

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

3. STL的六大组件

解释:
1、仿函数:类似于开关,从前往后、从左往右...类似这种。

2、容器:就是数据结构

3、空间配置器:内存池。

4、算法:如swap(交换)、sort(排序)等直接在STL实现了的简单算法

5、迭代器:遍历容器。

6、配接器:也叫适配器,可以看到,配接器里面有Stack、Queue等数据结构。

我们目前首要接触容器和算法

4. STL的重要性

1 在笔试中

笔试一般为20+道选择题,和2-3道编程题组成

我们来看一道算法题

https://www.nowcoder.com/practice/445c44d982d04483b04a54f298796288?tpId=13&tqId=11213&tPage=1&rp=1&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-rankin

2 在面试中

我们直接来看几个例子:

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


5. 如何学习STL

来看看前辈是怎么学习STL的:

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

二 编码表


1 编码的定义

编码:值和符号的映射关联集合

2 ASCII表

说到编码表,大家可能有点陌生,但是其实我们学习过编码表,在c语言中的ASCII表就是一个编码表。是美国人搞的他们文字编码表(0~127),是(char整型)在内存中的整型值。

3 string类

string是STL里的容器,只是我们在https://legacy.cplusplus.com/reference/(cpluspius)中找不到string,为什么?

因为string产生的比STL早,先设计的string。就是这

4 变长编码集

对汉字使用的示例:

int main()
{
char buff1[] = "abcA";
buff1[0]++;
char buff2[] = "比特abc";
cout << sizeof(buff2) << endl;
buff2[1]++;
cout << buff2 << endl;
buff2[1]++;
cout << buff2 << endl;
buff2[3]++;
cout << buff2 << endl;
buff2[3]++;
cout << buff2 << endl;
return 0;
}

运行结果为:

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

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

相关文章

付费的网站推广该怎么做合肥网络公司 网站建设

摘要 spark的调度一直是我想搞清楚的东西&#xff0c;以及有向无环图的生成过程、task的调度、rdd的延迟执行是怎么发生的和如何完成的&#xff0c;还要就是RDD的compute都是在executor的哪个阶段调用和执行我们定义的函数的。这些都非常的基础和困难。花一段时间终于弄白了其中…

SpringBootMVC相关内容

SpringMVC 基于java实现MVC模型的轻量级Web框架 做Web程序开发 当我们的浏览器发出一个请求给到后端服务器以后,由servlet负责处理请求, servlet只是能够接收请求产生响应,不能进行真正的数据处理 于是将后端服务拆…

小柏实战学习Liunx(图文教程三十五)

小柏实战学习Liunx(图文教程三十五)本节课主题:上一节课,docker镜像加速服务器搭建完成后,本节课需要配置域名,并使用nginx端口转发; 前言:一定要知道每一个命令是啥意思,并且要学会看报错信息,学会使用AI。1. 更新系…

【含文档+PPT+源码】基于GPT+SpringBoot的个人健康管理与咨询架构设计与建立

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

基于节流的流水线并行推理优化——gLLM

通过token节流实现LLM流水线推理服务的全局负载均衡 背景 vllm中的流水线调度策略 在当前的vllm调度中,对于pipeline并行的实现还不完善,存在大量气泡,当前在vllm中的流水线并行调度如下。 以4卡的流水线并行推理为…

Corral the Cows

点评:我认为是一道很不错的题,将很多基础的算法融汇到一起。 题目链接:https://vjudge.net/problem/POJ-3179#author=GPT_zh 题目描述:农夫约翰希望为他的奶牛建造一个围栏。由于奶牛是挑剔的动物,它们要求围栏是…

个人网站开发 怎么赚钱tp5被黑做的网站全变成首页

中秋小长假“余额”就剩半天了尽管心里有太多不舍也要调整自己毕竟假期都是短暂的工作才是职场人生的常态为了尽快消除“假日综合症”e小安贴心送上小文一篇小伙伴们赶紧“脉动”回来吧各类web应用充斥在我们的网络生活中&#xff0c;但是因为开发者安全意识不强而导致的安全问…

HarmonyOS 5 通知与语音能力开发实战:从消息推送到智能语音交互

一、通知系统开发全面解析 1. 通知权限与基础配置 在 module.json5中声明通知和语音相关权限: {"module": {"requestPermissions": [{"name": "ohos.permission.NOTIFICATION_CON…

Keithley 万用表里测电阻分成两种模式

Keithley 万用表里测电阻分成两种模式前面板操作(以常见型号为例)开机,确认表正常自检通过。在 功能选择区(Function/Measure 按键区):找到 Ω(Ohms / RES) 按键,按下后进入电阻测量模式。如果你的型号没有单…

HarmonyOS 5 Native与ArkTS混合开发实战:跨语言高性能组件开发

一、混合开发架构与原理 1. 混合开发核心架构 HarmonyOS混合开发采用分层设计:ArkTS层:UI组件和业务逻辑,使用声明式开发范式 Node-API桥接层:提供类型安全的跨语言通信机制 Native层:C/C++高性能计算和系统级功能…

实战:基于HarmonyOS 5构建分布式聊天通讯应用

1 HarmonyOS 5分布式通信基础 HarmonyOS 5为聊天通讯应用开发带来了革命性的分布式能力,让开发者能够构建真正跨设备、无缝协同的通信体验。本节将介绍如何利用HarmonyOS 5的分布式架构和API 12+特性来打造高性能聊天…

Java-Eclipse使用-多维数组的使用

Java-Eclipse使用-多维数组的使用Day08 1.多维数组的打印方式 2.多维数组的实操使用 3.多维数组的实操使用 4.多维数组的实操使用 明天会继续进行更新,二维数组的打印不太理解。

中国建设银行官方网站 认证网站运营和seo的区别

大家想必都知道&#xff0c;数组和链表的搜索操作的时间复杂度都是O(N)的&#xff0c;在数据量大的时候是非常耗时的。对于数组来说&#xff0c;我们可以先排序&#xff0c;然后使用二分搜索&#xff0c;就能够将时间复杂度降低到O(logN)&#xff0c;但是有序数组的插入是一个O…

HarmonyOS 5 动画开发实战:从基础动效到高级交互动画

🎯 一、HarmonyOS动画系统概述 HarmonyOS提供了强大而灵活的动画系统,支持多种动画类型和交互效果:动画类型 适用场景 核心API属性动画 组件尺寸、位置、透明度等属性变化 animateTo(), Animation()转场动画 组件出…

HarmonyOS 5 高级动效实战:粒子系统、路径动画与物理动效开发

一、粒子系统动画开发 粒子动画通过大量微小元素的运动创造复杂视觉效果,如雨雪、火焰、爆炸等自然现象。 1. 基础粒子系统实现 import particle from @ohos.graphics.particle; import { BusinessError } from @ohos…

从范德蒙德矩阵聊开去.

范德蒙德矩阵 : \(\bm{V}=\left[ \begin{array}{ccc}1 & x_0 & x_0^2 & \cdots & x_0^{n-1} \\1 & x_1 & x_1^2 & \cdots & x_1^{n-1} \\1 & x_2 & x_2^2 & \cdots &…

全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!

全新 CloudPilot AI:嵌入 Kubernetes 的 SRE Agent,降本与韧性双提升!在生成式 AI 的浪潮下,计算资源,尤其是支撑所有服务运行与调度的 CPU 资源,已经从单纯的成本项目,升级为驱动创新速度与竞争力的底层基石。…

HarmonyOS 5 动画性能优化深度解析:从原理到实践

一、HarmonyOS动画系统架构与渲染原理 1. 动画系统核心架构 HarmonyOS的动画系统采用分层设计,包含三个关键层级:UI组件层:基于ArkUI的声明式动画API(如animateTo) 动画引擎层:负责插值计算和时间轴管理 渲染管线…

容桂网站制作公司系统类小说

类ReentrantLock具有完全互斥排他的效果&#xff0c;即同一时间只有一个线程在执行ReentrantLock.lock()后面的代码。这样虽然保证了线程的安全性&#xff0c;但是效率低下。JDK提供了ReentrantReadWriteLock读写锁&#xff0c;使用它可以加快效率&#xff0c;在某些不需要操作…

vue3 + antd +ts cron 选择器使用

https://github.com/shiyzhang/shiyzhang-cron shiyzhang-cron组件 使用方法:npm i shiyzhangcron 或 pnpm i shiyzhangcron 给ts添加类型声明文件在项目根目录下创建 types 文件夹 在 types 文件夹中创建 shiyzhangc…