当前位置: 首页 > news >正文

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

完整教程:【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.hskmm.com/?act=detail&tid=15970

相关文章:

  • SpringBootMVC相关内容
  • 基于节流的流水线并行推理优化——gLLM
  • Corral the Cows
  • HarmonyOS 5 通知与语音能力开发实战:从消息推送到智能语音交互
  • HarmonyOS 5 Native与ArkTS混合开发实战:跨语言高性能组件开发
  • 实战:基于HarmonyOS 5构建分布式聊天通讯应用
  • Java-Eclipse使用-多维数组的使用
  • HarmonyOS 5 动画开发实战:从基础动效到高级交互动画
  • HarmonyOS 5 高级动效实战:粒子系统、路径动画与物理动效开发
  • 从范德蒙德矩阵聊开去.
  • HarmonyOS 5 动画性能优化深度解析:从原理到实践
  • HarmonyOS 5 性能优化全攻略:从启动加速到内存管理
  • #字符串执行函数——eval()、exec()和compile()详解
  • HarmonyOS 5 网络编程与数据存储实战:从RESTful API到本地持久化
  • 【光照】[环境光ambient]以UnityURP为例
  • 浅谈当前时代下大学生的就业择业及人生规划
  • 实用指南:玳瑁的嵌入式日记---0923(ARM)
  • 个人博客搭建记录【hexo】
  • 喵喵喵
  • flink不同环境切换 - --
  • ps-填充色
  • HarmonyOS 5分布式数据同步实战:跨设备待办事项应用
  • 深入理解HarmonyOS 5的AVSession:构建跨设备媒体播放器
  • Extjs小例子
  • 匿名函数
  • HarmonyOS资源管理与访问:多分辨率与多语言适配
  • 面试官:为什么没有虚拟线程池?
  • 润生软件简介:以“重构与共生”引领商业未来
  • Python 并发编程
  • 安装pyautogui时与setuptool时冲突报错-module setuptools.dist has no attribute check_test_suite