【C++】STL简介

目录

STL介绍

什么是STL

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

STL有几大版本:

  • 原始版本
  • P.J.版本
  • RW版本
  • SGI版本
    这些版本大家有兴趣的自行下去查阅。

STL的六大组件

STL在C++中是极其重要的一部分,网上有句话说:"不懂STL,不要说自己会C++",有了STL,许多底层的数据结构以及算法就不需要自己再重新造轮子了。

简单编码介绍

我们在计算机中想要表示文字,在计算机中对于文字就有两个问题:文字在计算机中应该如何存储,又如何正确的表示出来。

我们知道,计算机是由二进制0,1存储表示的,那应该如何将文字转换为0,1来表示呢。

对于使用英文的国家,如美国,他们的文字由字母,数字,标点等实现的,数量可能才百来个,所以他们用一个值来表示一个符号,这就是编码形成的就是编码表。这样就形成了ASCII码表。

这是美国他们的编码表,那除了英文,还有中文,韩文等,需要怎么去表示呢,因为中文是由上千上万个文字组成,此时就出现了一个万国码,即Unicode,可以编码全世界的文字

为了能根据不同范围的字符匹配使用不同的标准 ,提出了能适用更多语言的编码标准:即UTF-8UTF-16UTF-32

我们使用最多的就是UTF-8 ,因为它是针对Unicode的一种可变长度的字符编码,并且它兼容ASCII。

我们下面要学习的string它就可以兼容UTF-8,当我们用string想来输出字符串或者汉字等它都可以通过这个编码表来查找然后对应输出。

basic_string

basic_string是一个模板,它可以实例化出多个版本,在cplusplus中都有介绍:

  • string:常规字符串类,即每个字符占位 1byte
  • wstring:宽字符串类,用来处理较长字符串,Winows下占位 2byte,而 Linux下占位 4byte
  • u16string:匹配 UTF-16 编码标准,指定字符占位 2byte(C++11)
  • u32string:匹配 UTF-32 编码标准,规定字符占位 4byte(C++11)

我们接下来要学习的string其实也就是basic_string模板类的一个实例 ,它使用char来实例化basic_string模板类,string也就是basic_string< char>的别名。

string简介

sring其实是一个类,一个管理字符数组的一个类,string翻译过来就表示的是字符串。也就是string是表示字符串的字符串类

虽然string归属于STL的容器中,它的各种接口与常规容器接口也基本相同,但是它是在STL之前诞生的,所以会比其他容器多了一些操作。

在使用string时,必须包含#include头文件和using namespace std;

string的常规操作我们将在下一节仔细讲解。

感谢大家观看,如果大家喜欢,希望大家一键三连支持一下,如有表述不正确,也欢迎大家批评指正。

相关推荐
江沉晚呤时1 天前
从零实现 C# 插件系统:轻松扩展应用功能
java·开发语言·microsoft·c#
嵌入式进阶行者1 天前
【算法】深度优先搜索实例:华为OD机考双机位A卷- 中庸行者
c++·算法·华为od·深度优先
Knight_AL1 天前
Java 多态详解:概念、实现机制与实践应用
java·开发语言
Omigeq1 天前
1.2.1 - 图搜索算法(以A*为例) - Python运动规划库教程(Python Motion Planning)
开发语言·python·机器人·图搜索算法
资深流水灯工程师1 天前
基于Python的Qt开发之Pyside6 串口接收数据被分割的解决方案
开发语言·python·qt
没有bug.的程序员1 天前
Java 并发容器深度剖析:ConcurrentHashMap 源码解析与性能优化
java·开发语言·性能优化·并发·源码解析·并发容器
云深麋鹿1 天前
C++入门篇
c++
量子炒饭大师1 天前
【C++入门】零域终端的虚空指针协议——【nullptr】还在为编译器给NULL匹配为int而头疼?nullptr给予你全新的字面量!
开发语言·c++·nullptr
edisao1 天前
一。星舰到底改变了什么?
大数据·开发语言·人工智能·科技·php
阿豪只会阿巴1 天前
【多喝热水系列】从零开始的ROS2之旅——Day10 话题的订阅与发布1:Python
开发语言·c++·python·ubuntu·ros2