
🔥艾莉丝努力练剑:个人主页
❄专栏传送门:《C语言》、《数据结构与算法》、C/C++干货分享&学习过程记录、Linux操作系统编程详解、笔试/面试常见算法:从基础到进阶
⭐️为天地立心,为生民立命,为往圣继绝学,为万世开太平
🎬艾莉丝的简介:
C++的两个参考文档
老朋友(非官方文档):cplusplus
官方文档(同步更新):cppreference

目录
[1.1 编码的概念](#1.1 编码的概念)
[1.2 ASCII码表(C语言)](#1.2 ASCII码表(C语言))
[1.3 string类](#1.3 string类)
[1.4 变长编码集](#1.4 变长编码集)
[1.5 统一码/万国码](#1.5 统一码/万国码)
[1.6 GBK------汉字内码扩展规范](#1.6 GBK——汉字内码扩展规范)
[1.6.1 双字节](#1.6.1 双字节)
[1.6.2 乱码](#1.6.2 乱码)
[2.1 STL是什么?](#2.1 STL是什么?)
[2.2 STL的版本:原始版本+御三家](#2.2 STL的版本:原始版本+御三家)
[2.2.1 原始版本](#2.2.1 原始版本)
[2.2.2 "御三家"](#2.2.2 “御三家”)
[2.3 STL的六大组件](#2.3 STL的六大组件)
[2.3.1 六大组件](#2.3.1 六大组件)
[2.3.2 备注说明](#2.3.2 备注说明)
[2.4 STL的重要性(三个维度)](#2.4 STL的重要性(三个维度))
[2.4.1 在笔试中](#2.4.1 在笔试中)
[2.4.2 在面试中](#2.4.2 在面试中)
[2.4.3 在工作中](#2.4.3 在工作中)
[2.5 STL的学习](#2.5 STL的学习)
一、编码表详解
1.1 编码的概念
编码:值和符号的映射关联集合。
1.2 ASCII码表(C语言)
**C语言里面学过的ASCII表------也是编码表,**是美国人搞的他们文字编码表(0~127),是(char整型)在内存中的整型值。
1.3 string类
我们在cplusplus找不到string,这是为什么?
(PS:Containers是"容器"的意思)

这是因为string产生比STL要早,先设计的string这个类,后续的STL有参考string------所以STL会越学越快------string后面也参考STL做了一些修改,总之,string就是容器。
编码表:查询表。
basic_string:模版。
1.4 变长编码集

1.5 统一码/万国码
统一码/万国码是由统一码联盟开发的涵盖各国文字的编码表------unicode。
unicode:卖给各国的商品化电脑------给各国用的编码表(小国没分)。

中国有自己的编码表------GBK,汉字编码表。
1.6 GBK------汉字内码扩展规范
"GB"就是"国标"。
小知识,GBK这个汉字包括中日韩汉字(自古以来受中华文化圈辐射影响的国家)。
1.6.1 双字节
双字节:2个字节来编码(Windows也支持GBK,因为中国市场占比大,所以支持汉化)。
1.6.2 乱码
设置的是GBK,读取用了其它的编码集,就会乱码------



这就是乱码,再看下图------

二、STL简介
2.1 STL是什么?
STL(standardtemplatelibaray-标准模板库):STL是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。

2.2 STL的版本:原始版本+御三家
2.2.1 原始版本
AlexanderStepanov、MengLee在惠普实验室完成的原始版本,本着开源精神,他们声明允许
任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原
始版本一样做开源使用。HP版本------所有STL实现版本的始祖。
C++在1994年就已经成熟了,但是C++委员会却一直到1998年才发布C++的第一个正式大版本------C++98,正是因为惠普实验室(HP)的C++HP版本的发布,推迟了C++大版本标准的发行。
2.2.2 "御三家"
P.J.版本
由P.J.Plauger开发,继承自HP版本,被WindowsVisualC++采用,不能公开或修改,缺陷:可读
性比较低,符号命名比较怪异。
RW版本
由RougeWage公司开发,继承自HP版本,被C++Builder采用,不能公开或修改,可读性一
般(缺点)。
SGI版本
由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版本。被GCC(Linux)采用,可移植性好,可公开、修改甚至贩卖,从命名风格和编程风格上看,阅读性非常高。我们后面学习
STL要阅读部分源代码,主要参考的就是这个版本。
总结

补充
GCC:g++(被认为是GCC的一个组件)、gcc。
2.3 STL的六大组件
2.3.1 六大组件

2.3.2 备注说明
1、仿函数:类似于开关,从前往后、从左往右...类似这种。
2、容器:其实就是数据结构。
3、空间配置器:内存池。
4、算法:如swap(交换)、sort(排序)等直接在STL实现了的简单算法。
5、迭代器:遍历容器。
6、配接器:也叫适配器,可以看到,配接器里面有Stack、Queue等数据结构。
2.4 STL的重要性(三个维度)
博主将从三个维度------笔试、面试、工作------来强调STL的重要性。
一般中大厂通过笔试后还有2~3轮面试,有的中小厂甚至没有笔试,直接进行面试。
2.4.1 在笔试中
笔试:20道选择(权重40%)+2~3道算法编程题(权重60%)。
选择题有可能这里考一道那里考一道,但一般还是偏技术性,不过这个还是和岗位挂钩,像测试开发/测试岗位会考一些和技术无关的题目,比如如何处理和开发人员的关系(人情世故)。
我们来看三道算法题------
大家记住,招聘的本质:筛选符合企业需求的优秀人才**。**
PS:"面试造火箭,工作拧螺丝"。
2.4.2 在面试中
我们直接看面经就很明了了------


2.4.3 在工作中
网上有句话说:"不懂STL,不要说你会C++"。STL是C++中的优秀作品,有了它的陪伴,许多底层
的数据结构以及算法都不需要自己重新造轮子,站在前人的肩膀上,健步如飞的快速开发。
2.5 STL的学习
借用一位前辈大佬的话------

总结
正如前辈所言,学习STL的三个境界------

本文完整代码
Test.cpp:
cpp
#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<string>
#include<algorithm>
#include<list>
using namespace std;
//STL简介
// GBK------windows为了中国市场(比较大),汉化
//中文乱码
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;
}
结尾
往期回顾:
**结语:**创作不易,大家不要忘记给已经满头大汗的艾莉丝来个"一键四连"哦!
🗡博主在这里放了一只小狗,大家看完了摸摸小狗放松一下吧!🗡
૮₍ ˶ ˊ ᴥ ˋ˶₎ა